コンポーネント
コントローラで使える部品。
以下を参照した。
設定が必要なコンポーネントを使う際の設定
class HogesController extends AppController { public function initialize() { parent::initialize(); $this->loadComponent('Auth', [ 'authorize' => 'Controller', 'loginAction' => ['controller' => 'Users', 'action' => 'login'] ]); $this->loadComponent('Cookie', ['expires' => '1 day']); } }
Controller->beforeFilter()でconfig()を使って設定する方法もあり。
設定は$this->Auth->config('loginAction');でよみ取れる。
コンポーネントの使用
if ($this->Post->delete($this->request->getData('Post.id')) {
要するに移譲している。
コンポーネントの実装
namespace App\Controller\Component; use Cake\Controller\Component; class MathComponent extends Component { public function doComplexOperation($amount1, $amount2) { return $amount1 + $amount2; } }
public $components = ['Existing'];
これで$this->Existingとなってコンポーネントから色々使える。
コンポーネントからコントローラにアクセス。。orz
$controller = $this->_registry->getController();
$controller = $event->getSubject();
コールバック
- beforeFilter(Event $event)
- startup(Event $event)
- beforeRender(Event $event)
- shutdown(Event $event)
- beforeRedirect(Event $event, $url, Response $response)