Symfony1.4メモ
Symfony触るらしいので、Hello Worldぐらいはやろうと思い。
コードが全く読めない…! となったら怖いので。
インストール
参考サイト→ http://ameblo.jp/itboy/entry-10935734994.html
ドキュメントルート以外で動かしたいので、htaccessをちょっと変えるのと、symfonyのインストール先が環境で違うっぽいことに注意。(自分は/usr/share/pear/data/symfony/web/sf/ だった)
URIのデフォルト
http://domain/{モジュール名}/{アクション名}
Controller周り
Actionsクラスを作って、メソッドにアクションを書いていくイメージ。
- ファイルの命名規則は以下っぽい。
- /path/to/{アプリ名}/modules/{モジュール名}/actions/actions.class.php
- クラス(モジュール)の命名規則
- モジュール名+Actions
- sfActionsを継承する
- メソッド(アクション)の命名規則
- execute+メソッド名
コードはこんな感じ
<?php /** * user actions. * * @package itboy * @subpackage user * @author Your name here * @version SVN: $Id: actions.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $ */ class userActions extends sfActions { /** * Executes index action * * @param sfRequest $request A request object */ public function executeIndex(sfWebRequest $request) { //$this->forward('default', 'module'); $html = <<<EOF <p><a href="http://takuan.me/apps/user/hoge/data1/value">valueを渡す</a></p> <p><a href="http://takuan.me/apps/user/hoge/data1/value">hogehogeを渡す</a></p> EOF; $this->setVar('word', $html, ture); } /** * hogehoge */ public function executeHoge(sfWebRequest $request) { // /user/hoge/data1/value で値取れる/渡せる.noneはデフォ値 $hoge = $this->getRequest()->getParameter('data1', 'none'); //テンプレートに値渡す $this->setVar('word', $hoge); //テンプレート指定したい場合 $this->setTemplate('index'); } }
DB触るところまでやりたかったんですが、Skypeという時間泥棒にやられ。
DoctrineはSilex使った時に触ったことがあるので、なんとかなるかな。
hoge
- テンプレートは継承とか出来る?
- twig使うなり、自分でその仕組作るなりする?
- Modelをどう書くかが不明。なんちゃらBussinessLogic.phpとか作る?全部Actionクラスに書いちゃう?
- あんまり良くわかってないけど、DoctrineとかはDIコンテナを介して呼ぶっぽい。(Silexもそうだけど)Modelのクラスは独自で作るなら、どうやってインジェクションする?Modelクラスは何か継承して作るとか?
- と思ったらこの辺に書いてた。ググれば定石が分かりそう。http://symfony.com/legacy/doc/jobeet/1_2/ja/06?orm=Doctrine
動いているコード読めるから、枠組みだけ知っておけば多分なんとか戦えるだろう…!