CakePHP requestAction()替代选项w / element

时间:2011-07-20 02:07:38

标签: php arrays cakephp controller elements

我正处于尝试将控制器操作中的值直接传递给元素的情况。

我知道如何执行此操作的唯一方法是使用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()传递的值。

2 个答案:

答案 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文章。