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 に答える