0

CakePHP では、コントローラーの各メソッドには独自のビューがあり、ビュー テンプレート ファイルはメソッドの名前です。

class DataController extends AppController 
{
  public function one()
  {
    // will render one.ctp
  }

  public function two()
  {
    // will render two.ctp
  }
}

API ドキュメントによると、$viewレンダリングするビューを指定する Controller のプロパティがあります。all.ctpしたがって、コントローラーのすべてのメソッドに対して、たとえば、デフォルトのビューファイルを指定する機能が必要です

class DataController extends AppController 
{
  public $view = 'all';

  public function one()
  {
    // should render all.ctp
  }

  public function two()
  {
    // should render all.ctp
  }
}

しかし、これは機能せず、CakePHP は$viewプロパティを無視し、メソッドと同じ名前のテンプレート ファイルを探し続けます。

$this->render('all');コントローラーの各メソッドに挿入することなく、デフォルトのビューを持つ方法はありますか?

4

1 に答える 1

1

Controller::setRequest()コントローラー クラスのコンストラクターで呼び出されている値はオーバーライドされます。

代わりにコントローラーのbeforeFilter()コールバックを使用して値を設定できます。

public function beforeFilter()
{
    parent::beforeFilter();
    $this->view = 'all';
}
于 2013-10-06T14:41:56.730 に答える