昨日のエントリの続き。
アプリケーションを作ったところから、helloworldを表示させるところまで。
モジュールを作成する
myprojectプロジェクトのhelloアプリケーション内に、適当なモジュール(ここではworldモジュール)を作成する。
$ cd ~/myproject $ php symfony generate:module hello world
この時点で /hello_dev.php/world/index/ にアクセスできるようになっている。
このURLで実行されるアクションは、 myproject/apps/hello/modules/world/actions/actions.class.php となる。
ディレクトリ深いのでエクスプローラやIDEのようなものがほしくなりますね。
ファイルはこんな感じ。(ソースのコメント部分は削除した)
<?php class worldActions extends sfActions { public function executeIndex(sfWebRequest $request) { $this->forward('default', 'module'); } }
defaultアプリケーションのmoduleアクションにforward(転送)している。
このforward部分のコードを削除すると、 myproject/apps/hello/modules/world/templates/indexSuccess.php テンプレートが使われるようになる。
actions.class.phpとindexSuccess.phpを編集する。
actions.class.php
<?php class worldActions extends sfActions { public function executeIndex(sfWebRequest $request) { } }
URLルーティングを変更する
このworldモジュールのindexアクションをトップページ /hello_dev.php/ で表示するためにURLルーティングを変更する。
myproject/apps/hello/config/routing.yml を編集する。
デフォルトで用意されているルーティングを削除して、/ へのアクセスでworldモジュールのindexアクションを使うようにする。
routing.yml
homepage: url: / param: { module: world, action: index }
これで /hello_dev.php/ で表示されるようになった。
ここで、 / でアクセスしてみると、変更が反映されておらず、symfonyのデフォルトページが表示されてしまう状態になった。
これはsymfonyがphpのモジュールをキャッシュするようになっているからみたい。
symfonyのモジュールのキャッシュを削除するには、 cache:clear コマンド(省略ならcc)を実行する。
$ php symfony cc
キャッシュを削除して / にアクセスすると「Hello, world」と表示されるようになった。