CakePHP Contoler操作
アクション
デフォルトアクション
<?php
namespace App\Controller;
AppControllerの名前空間と同じ場所に配置する
use App\Controller\AppController;
継承の為のAppControllerインポート
class HelloController extends AppController {
AppControllerを継承する
デフォルトページ処理アクション(=メソッド)
public function index(){
$this->name = 'Hello';
$this->autoRender = false;
echo "hello world!"
}
}
?>
↓のURLで呼び出される
http://~/hello/index
http://~/hello/
http://~/hello
アクション
~
class HelloController extends AppController {
~
testアクション
public function test(){
echo "test"
}
}
↓のURLで呼び出される
http://~/hello/test
callbackメソッド
Controller | |
---|---|
initialize | initialize() |
beforeFilter | beforeFilter(Event $event) |
action | |
beforeRender | beforeRender($view = null, $layout = null) |
afterFilter | beforeFilter() |
Componentを含めたcallbackメソッドの実行順序については「callbackメソッドの実行順序」参照
beforeFilter
~
use Cake\Event\Event;
beforeFilter引数:Eventインポート
class HelloController extends AppController {
function beforeFilter(Event $event){
parent::beforeFilter($event);
~
}
public function index(){
echo "hello world!"
}
}
initialize
~
class HelloController extends AppController {
public function initialize(){
parent::initialize();
~
}
}
beforeRender
~
class HelloController extends AppController {
public function beforeRender($view = null, $layout = null){
parent::beforeRender($view, $layout);
~
}
}
ページ遷移
リダイレクト
$this->redirect(array(
'controller' => 'my_pages',
'action' => 'receive'
)
);
$this->redirect('http://example/orders/confirm');
$this->redirect('/test/test');
フォワード
$this->setAction("(アクション名)");
例:$this->setAction("test");
ブラウザのURLは遷移前
その他
AJAX
クライアント処理は「jQuery Ajax」参照
public function test($id = null){
if($this->request->is('ajax')){
$ret = ['count' => $id,];
JSON形式で返す
echo( json_encode($ret) );
}
return;
}