【PHP Phalcon】404ページの実装

Phalcon

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


以上となります。

タイトルとURLをコピーしました