2010-08-19 6 views
11

est-il un moyen raisonnable d'accéder à l'attribut de vue « passedArgs » (ou tout similaire)CakePHP accès afficher les attributs/variables d'une aide

/* view */ 
$this->passedArgs 

à partir d'un Helper? Je serais heureux de personnaliser le _construct() de l'assistant ou de personnaliser l'app_helper ... mais je ne veux pas avoir besoin de passer $this->passedArgs dans l'assistant pour chaque vue ou utilisation.

Répondre

26

2.x et 3.x Gâteau

Vous pouvez rechercher vos variables dans l'objet _View:

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

1.x Gâteau

Si vous attrapez l'objet de vue actuel depuis l'assistant que vous devriez pouvoir atteindre.

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

Gâteau 1.2.x

Si vous prenez l'objet vue actuelle à partir de l'aide, vous devriez être en mesure d'obtenir à ses viewVars.

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

Profitez, Nick

+5

Pour moi, je avais besoin pour obtenir les variables de vue définies par le contrôleur, il était donc: '$ this-> viewVars = ClassRegistry :: getObject ('view') -> viewVars; ' Il s'agit alors d'un tableau dont les clés sont le nom des variables extraites et utilisées dans la vue pendant le rendu. – BeesonBison

+11

Dans CakePHP 2.x, vous pouvez accéder à viewVars à partir de la méthode d'un assistant en utilisant: '$ this -> _ View-> viewVars ['var']' – BeesonBison

+0

+1 pour atomicguava, cela fonctionne, contrairement à ClassRegistry. (Cake 2.3 stable) –

1

Avez-vous essayé de définir la valeur de la vue depuis l'AppController?

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