2010-08-19 7 views
11

ist es eine vernünftige Möglichkeit, die Ansicht Attribut „passedArgs“ (oder ähnliche) voncakephp Zugriff Ansicht Attribute/Variablen aus einem Helfer

/* view */ 
$this->passedArgs 

für den Zugriff auf in einem Helper?

Ich würde glücklich sein, die _construct() des Helfers anpassen oder die app_helper ... aber ich möchte nicht $this->passedArgs in den Helfer für jede Ansicht oder Verwendung übergeben müssen.

Antwort

26

Kuchen 2.x und 3.x

Sie können Ihre Variablen im _View Objekt sehen:

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

Kuchen 1.x

Wenn Sie greifen das aktuelle Ansichtsobjekt aus dem Helper, den Sie in der Lage sein sollten, zu seinen passedArgs zu gelangen.

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

Kuchen 1.2.x

Wenn Sie das aktuelle Ansicht Objekt im Helfer greifen sollten Sie in der Lage sein, seinen viewVars zu bekommen.

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

Genießen, Nick

+5

Für mich ich brauchte die Ansicht Variablen von der Steuerung gesetzt zu bekommen, so war es: '$ this-> viewVars = Class :: getObject ('view') -> viewVars; ' Dies ist dann ein Array, dessen Schlüssel der Name der Variablen ist, die beim Rendern extrahiert und in der Ansicht verwendet werden. – BeesonBison

+11

In CakePHP 2.x, können Sie auf die ViewVars von einem Helfer-Methode zugreifen mit: $ this-> _ View-> viewVars ['var'] ' – BeesonBison

+0

+1 für atomicguava, das funktioniert, während ClassRegistry nicht für mich. (Cake 2.3 stabil) –

1

Haben Sie versucht, nur den Wert der Ansicht vom AppController zu setzen?

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