--
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