php5フレームワークsymfonyを勉強しました。

去年の暮れにsymfonyの本を2冊読みまして、環境構築して実際に少し動かしてみていたのですが、小規模開発がメインでしたので php + smarty + pear でいいかなと思って放置してきました。

しかし、中〜大規模開発出来るようにならないとなと感じ初め、また勉強し直そうと思い勉強し直しています。

今日は軽くドキュメントを読みました。頭の中の整理の為にメモをしたいと思います。
(下記はsymfony1.0系の勉強です。何故1.0系の勉強しているのかと言うと、1.1系の最新バージョンでは、form_tag()の仕様変更があるのですが、それについての詳細の情報が取得出来ない為、フォーム周りの処理をどうしてよいのかわからず、1.0系から勉強しているという訳です。)

http://symfony.xrea.jp/
1〜5章をメモ

プロジェクトの作成

symfony init-project myproject

アプリケーションの作成

symfony init-app myapp

モジュールの作成

symfony init-module myapp mymodule

アクションの追加

<?php
 
class mymoduleActions extends sfActions
{
  public function executeMyAction()
  {
  }
}

?>

テンプレートの追加

mymodule/templates/myActionSuccess.php
を追加する

アクションからの情報をテンプレートに渡す

<?php
 
class mymoduleActions extends sfActions
{
  public function executeMyAction()
  {
    $today = getdate();
    $this->hour = $today['hours'];
  }
}
?>

リスト4-7 - テンプレートはアクションの属性に直接アクセスできる(templates/showSuccess.php)

<p>Hello, world!</p>
<?php if ($hour >= 18): ?>
<p>Or should I say good evening? It is already <?php echo $hour ?>.</p>
<?php endif; ?>

form_tagヘルパー

<p>こんにちは?</p>
<?php if ($hour >= 18): ?>
<p>それともこんばんはと言う方がよろしいでしょうか?もう<?php echo $hour ?>時です。</p>
<?php endif; ?>
<?php echo form_tag('mymodule/anotherAction') ?>
  <?php echo label_for('name', 'お名前は?') ?>
  <?php echo input_tag('name') ?>
  <?php echo submit_tag('Ok') ?>
</form>

link_toヘルパー

<p>こんにちは!</p>
<?php if ($hour >= 18): ?>
<p>もしくはこんばんはと言った方がよろしいでしょうか?もう<?php echo $hour ?>時です。</p>
<?php endif; ?>
<?php echo form_tag('mymodule/anotherAction') ?>
  <?php echo label_for('name', 'お名前は?') ?>
  <?php echo input_tag('name') ?>
  <?php echo submit_tag('Ok') ?>
  <?php echo link_to('名前を教えない','mymodule/anotherAction?name=anonymous') ?>
</form>

リクエストから情報を入手する

<?php
 
class mymoduleActions extends sfActions
{
  ...
 
  public function executeAnotherAction()
  {
    $this->name = $this->getRequestParameter('name');
  }
}

?>

リクエストパラメータをテンプレートから直接取得する

<p>Hello, <?php echo $sf_params->get('name') ?>!</p>

**テンプレート内のリクエストパラメータをテストする
<p>こんにちは、<?php echo $sf_params->get('name', 'John Doe') ?>さん!</p>

app.ymlのサンプル設定

リスト5-15 - app.ymlのサンプル設定

all:
  .general:
    tax:          19.6
  default_user:
    name:         John Doe
  mail:
    webmaster:    webmaster@example.com
    contact:      contact@example.com
dev:
  mail:
    webmaster:    dummy@example.com
    contact:      dummy@example.com

リスト5-16 - PHPのコードでdev環境の構成設定にアクセスする

echo sfConfig::get('app_tax');   // カテゴリのヘッダーが無視されることは覚えておく
 => '19.6'
echo sfConfig::get('app_default_user_name');
 => 'John Doe'
echo sfConfig::get('app_mail_webmaster');
 => 'dummy@example.com'
echo sfConfig::get('app_mail_contact');
 => 'dummy@example.com'

スクリプトを設定に組み込む

all:
  translation:
    format:  <?php echoln sfConfig::get('sf_i18n') == true ? 'xliff' : 'none' ?>

[PR]Spreeの情報を集めています。

ECを持ちたい方、仕事でECを使いたい方向けのコミュニティサイトです。
このサイトでは世界で最も使用されているECの1つであるSpreeについての情報を提供しています。
http://spreecommerce.jp/