2010-08-19 15 views
11

c'è un modo ragionevole accedere all'attributo vista "passedArgs" (o simile)cakephp accesso vista attributi/variabili da una helper

/* view */ 
$this->passedArgs 

dall'interno di un Helper?

Sarei felice di personalizzare il _construct() dell'helper o personalizzare l'app_helper ... ma non voglio passare l'$this->passedArgs nell'helper in ogni vista o utilizzo.

risposta

26

torta 2.xe 3.x

È possibile cercare le variabili nell'oggetto _View:

$this->_View->viewVars['foo']; 

torta 1.x

Se prendi l'oggetto vista corrente dall'interno dell'helper che dovresti essere in grado di raggiungere il suo oggetto passato.

class SomeHelper extends AppHelper { 
    function __construct($settings = array()){ 
    $this->passedArgs = ClassRegistry::getObject('view')->passedArgs; 
    } 
} 

torta 1.2.x

Se si afferra l'oggetto vista corrente da dentro l'aiutante si dovrebbe essere in grado di raggiungere i suoi viewVars.

class SomeHelper extends AppHelper { 
    function __construct($settings = array()){ 
    $this->viewVars = ClassRegistry::getObject('view')->viewVars; 
    } 
} 

godere, Nick

+5

Per quanto mi riguarda ho avuto bisogno per ottenere le variabili di vista stabiliti dal regolatore, così è stato: '$ this-> viewVars = ClassRegistry :: getObject ('vista') -> viewVars; ' Questo è quindi un array, le cui chiavi sono il nome delle variabili che vengono estratte e utilizzate nella vista durante il rendering. – BeesonBison

+11

In CakePHP 2.x, puoi accedere a viewVars dal metodo di un aiutante usando: '$ this -> _ View-> viewVars ['var']' – BeesonBison

+0

+1 per atomicguava, che funziona mentre ClassRegistry non fa per me. (Cake 2.3 stable) –

1

Hai provato a impostare il valore della vista da AppController?

class AppController extends Controller { 
function beforeFilter() { 
    // other stuff 
    $this->set('passed_args', $this->params['pass']); 
} 
} 
Problemi correlati