CakePHP ajax渲染到不同的视图

时间:2010-12-10 04:18:30

标签: php cakephp

我遇到了在CakePHP中处理我项目的问题。

这是我的代码:

function publish_link()
    {
        Configure::write('debug', 0);
        if($this->RequestHandler->isAjax()) 
        {
            $items = $_POST['image_id'];
            $this->set('selected_list', $items);
            $this->layout = 'ajax';
            $this->render('publish');
            exit;
        }
    }


function publish($items = null) {

        $this->layout = 'box';

        if(!empty($this->data['User']))
        {
                    //some code
            }
}

这里使用Ajax调用publish_link操作,并将其渲染到另一个视图文件publish.ctp。

它渲染它并且我可以正确地获得set_list的设置值,但是在渲染了这个ctp后,它的控制器动作publish()被调用并清空了从publish_link()设置的变量selected_list。

我无法理解如何处理这个问题。

请帮帮我。

由于

1 个答案:

答案 0 :(得分:0)

我相信,您正试图将变量从一个动作传递到另一个动作。这不是cakephp的工作方式。

要在操作之间共享变量,您应该将它们封装在beforeFilter()函数中,如

function beforeFilter() {
    if(!empty($_POST['image_id'])) {
        $items = $_POST['image_id'];
        $this->set('selected_list', $items);
    }
}