ぶろぐ

日記です

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クラスを作って、メソッドにアクションを書いていくイメージ。

コードはこんな感じ

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

動いているコード読めるから、枠組みだけ知っておけば多分なんとか戦えるだろう…!