PHPフレームワークでファルコンを使用してます。
今回は公開しているWEBページには必須な404ページをPhalconで実装してみることにします。
基本
Phalconのエントリポイント(一番始めに実行されるファイル)はpublic/index.phpになってます。
ざっくり、骨組みとなる設定はこのファイルで定義します。
そしてこのエントリポイントでイベント(アクション)の振り分けしているのが「dispatcher」です。
DIオブジェクトのキーとなるdispatcherを指定して設定していく感じです。
サクッと実装ポイントだけ記しておきます。
public/index.phpの編集
public/index.phpを以下のように編集しましょう。
$di = new FactoryDefault();
$di->set('dispatcher', function () use ($di) {
$evManager = $di->getShared('eventsManager');
$evManager->attach("dispatch:beforeException", function ($event, $dispatcher, $exception) {
switch ($exception->getCode()) {
case \Phalcon\Mvc\Dispatcher::EXCEPTION_HANDLER_NOT_FOUND:
case \Phalcon\Mvc\Dispatcher::EXCEPTION_ACTION_NOT_FOUND:
$dispatcher->forward(array(
'controller' => 'index',
'action' => 'show404',
));
return false;
}});
$dispatcher = new \Phalcon\Mvc\Dispatcher();
$dispatcher->setEventsManager($evManager);
return $dispatcher;
}, true);
この箇所で404用のcontrollerとviewを指定しています。
$dispatcher->forward(array(
'controller' => 'index',
'action' => 'show404',
));
404用のcontrollerとviewを用意
今回の場合、indexコントローラにshow404アクションをつくる感じとなります。
class IndexController extends ControllerBase
{
public function show404Action()
{
}
}
pviews/index/show404.phtmlを作成します。
ここで404ページをコーディングしましょう。
<div>404ページでーす</div>
ここに関しては404ページでなくてもTOPにリダイレクトとかでもいいかもしれません。
各々の環境や好みに応じて、適宜指定してください。
以上となります。