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にリダイレクトとかでもいいかもしれません。
各々の環境や好みに応じて、適宜指定してください。
以上となります。














