2010-08-19 6 views
11

есть разумный способ доступа к атрибуту просмотра «passedArgs» (или подобным)CakePHP обращающихся просматривать атрибуты/переменные внутри помощник

/* view */ 
$this->passedArgs 

изнутри Helper?

Я был бы рад настроить _construct() помощника или настроить app_helper ... но я не хочу передавать $this->passedArgs в помощник при каждом представлении или использовании.

ответ

26

торт 2.x и 3.x

Вы можете посмотреть переменные в _View объекта:

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

торт 1.x

Если вы захватываете текущий объект вида из вспомогательного помощника, который вы должны получить в его passArgs.

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

торт 1.2.x

Если вы захватите текущий объект вида внутри помощника вы должны быть в состоянии добраться до его viewVars.

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

Наслаждайтесь, Ник

+5

Для меня нужно, чтобы получить вид набор переменных из контроллера, так что это было: '$ this-> viewVars = ClassRegistry :: GetObject ('вид') -> viewVars; ' Это массив, ключ которого является именем переменных, которые извлекаются и используются в представлении во время рендеринга. – BeesonBison

+11

В CakePHP 2.x вы можете получить доступ к viewVars из метода помощника, используя: '$ this -> _ View-> viewVars ['var']' – BeesonBison

+0

+1 для atomguava, который работает, тогда как ClassRegistry не для меня. (Cake 2.3 stable) –

1

Вы пытались просто установить значение вида из AppController?

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