1

我正在尝试对我的应用程序中的特定操作名称使用渲染。实际上,这是我在 AppController::afterFilter() 中设置的条件

    if($this->action == 'parameter') {
        $this->render('/Elements/parameter');
    }
    else if($this->action == 'datagrid') {
        $this->render('/Elements/datagrid');
    }

在我的控制器中/samples/parameter

            $this->set('model', Inflector::singularize(Inflector::camelize($this->name)));
        $this->set('controller', $this->name);
        if($parameter_id) {
            $this->set('mode', $mode);
            $this->set('parameter', $this->Sample->find('first', array('conditions' => array('Sample.id' => $parameter_id))));
        } else {
            $this->set('mode', 'add');
            $this->set('parameter', array());
        }

我知道我必须在变量定义之后渲染,所以我使用了afterFilter一些我不理解或错过的东西?

信息: 我已在Samples Controller功能中设置

    public function afterFilter(){
        parent::afterFilter();
    }

谢谢你们!

4

1 回答 1

2

渲染过程完成afterFilter()调用回调,因此在其中调用是错误的。render()

如果要更改要呈现的视图,请在beforeRender(). 所以做类似的事情

if ($this->action == 'parameter') {
    $this->view = '/Elements/parameter';
} elseif ($this->action == 'datagrid') {
    $this->view = '/Elements/datagrid';
}
于 2012-12-26T03:10:20.070 回答