--
Phalconはディレクトリ構造が凄く自由なので、適当に自分好みな感じに作っていこうと思います。
Phalcon DevTools (1.3.0)で、プロジェクトを作ります。
$ phalcon project phalcon_project
- app/controllers/ControllerBase.php
- app/controllers/IndexController.php
は削除します。app/controllers/ が空になるので、一応 .gitkeep を入れておきました。
以下の composer.json を作成して "composer install" します。以後、app/classes/に、App\Xxx\Yyyみたいな名前空間でクラスを作成します。コントローラもその中に作ります。
{ "autoload": { "psr-0": { "App": "app/classes" } } }
public/index.php に、以下を追記します。services.phpの読み込み後にしました。
/** * Bootstrap */ include __DIR__ . "/../app/bootstrap/bootstrap.php";
app/bootstrap/bootstrap.php を作成します。composer の autoload.php と、自作ルーティング設定ファイルの読み込みを行っています。
<?php require_once __DIR__.'/../../vendor/autoload.php'; require_once __DIR__.'/routes.php';
app/bootstrap/routes.php を作成します。自動ルーティングをしないようにして、"/"に対するコントローラ::アクションと、not foundなコントローラ::アクションを登録しています。
<?php /** Phalcon\DI\FactoryDefault $di */ $di->set('router', function () { $router = new Phalcon\Mvc\Router(false); $router->setDefaults(['namespace' => 'App\Controller', 'controller' => 'error', 'action' => 'route404']); $router->add('/', 'Index::index'); return $router; });
app/classes/App/Controller ディレクトリを作成して、以下の3つのコントローラを作成します。
AppController.php
<?php namespace App\Controller; use Phalcon\Mvc\Controller; class AppController extends Controller { }ErrorController.php
<?php namespace App\Controller; class ErrorController extends AppController { public function route404Action() { $this->response->setStatusCode(404, 'Not Found'); } }IndexController.php
<?php namespace App\Controller; class IndexController extends AppController { public function indexAction() { } }
app/views/ ディレクトリに、各ビューファイル(.volt)を作成 or 編集します。
layouts/default.volt
<!DOCTYPE html> <html> <head> <title>{% block title %}{% endblock %}</title> </head> <body> {% block content %}{% endblock %} </body> </html>index/index.volt
{% extends "layouts/default.volt" %} {% block title %}Index{% endblock %} {% block content %} Index {% endblock %}error/route404.volt
{% extends "layouts/default.volt" %} {% block title %}Error{% endblock %} {% block content %} Not Found {% endblock %}
後ほど、GitHubにメモ用なレポつくろうと思います。
No comments:
Post a Comment