Controller内のアクションで、処理が終わったあとにそのページに戻る処理をしてた時のことです。
表示している画面をwebroot内にHTMLファイルで出力するというプログラムを構築し、それをoutputというアクションで作成しました。
処理が終わったあと元の場所に戻るようにしたかったのですが、exit()では真っ白な画面で終わってしまいます。
ならViewではいつもの$this->Url->build()で指定すればよいかとaction内に記述しました。ページ遷移といえばPHPではheader()ですよね。
header('Location: '.$this->Url->build(['Controller' => 'Pages', 'action' => 'index']));
exit();
ところが、エラーが発生しました。
Call to a member function build() on null
え?ビューで普通につかうものですよ?Controller内では使えないんですか?
ネットで調べるとヘルパーを追加すれば使えるよ、とのことだったので追加してみました。
public $helpers = ['Url'];
しかし、動作は変わらずのエラー表示。header()内にURLを追加するだけなんですが、直接絶対URLを書いてもいずれWebサーバーにアップしてドメイン当てるとまたURL変更するの面倒だなと思って違う形でないか調べました。
するとCakeにはredirectがありました。
return $this->redirect(
['controller' => 'Pages', 'action' => 'index']
);
exit();
そういえば、Controllerのaddやeditの中に普通にredirectが記述されていましたねw
うっかりというか、灯台下暗しというか。ちゃんと例はすぐそこにあるもんですね。