我正处于尝试将控制器操作中的值直接传递给元素的情况。
我知道如何执行此操作的唯一方法是使用requestAction(),但由于资源原因我不喜欢使用该功能,并且不在手册中推荐。
任何人都可以对另一种方法有所了解吗?
以下是我现在所拥有的:
鸟控制器操作:
function element_array_pass() {
$this->paginate['Bird'] = array(
'fields' => array('id', 'name'),
'contain' => array('id', 'name'),
'order' => 'Bird.id'
);
$bird_elmnt = $this->paginate('Bird');
$this->set(compact('bird_elmnt', $bird_elmnt));
}
dir: views / elements / element_array_pass.ctp
debug($bird_elmnt); // nothing being passed here.
dir: views / birds / index.ctp
我在此文件中包含该元素,但该数组不会传递。
echo $this->element('element_array_pass',array("bird_elmnt" => $bird_elmnt)); // call to element.
我想在index.ctp中包含此元素,其中包含从上面包含的action()传递的值。
答案 0 :(得分:1)
echo $this->element('birds_paginator_element',array('bird_elmnt_var'=>$bird_elmnt_var));
答案 1 :(得分:0)
您可以通过element()
方法的第二个参数将其他数据传递给元素。
echo $this->element('birds_paginator_element', array(
'bird_elmnt_var' => $bird_elmnt
));
// In element
var_dump($bird_elmnt_var);
另请阅读Mark Story的this文章。