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;
}

コメントを残す

メールアドレスが公開されることはありません。