ビューの基本

Posted by muchag | Symfony 1.x |
初回投稿:2011-06-03 (金) 12:20:13 | 最終更新:2011-06-03 (金) 21:13:28

ビューMVC の V 。
Symfony では テンプレート と呼ぶ方が一般的っぽい。

公式:Practical symfony 4日目: Controller と View

【環境】
[symfony] 1.4.11
役割

ブラウザへの表示を担当。
 

ファイル名

アクション名に「Success」というサフィックスを付ける。
例)executeIndex -> indexSuccess.php
 

格納場所
apps\(アプリ名)\modules\(モジュール名)\templates

 

中身

中身は HTML

基本的には、値の表示とループ等のステートメントのみ PHP

もちろん、CSS やら Javascript やらも利用可能。
 

ヘルパー
CSS, JavaScript 宣言
  1. include_javascripts()
  2. include_stylesheets()

 

ビュー内で CSS を指定
  1. use_stylesheet('jobs.css')

のように use_stylesheet を用いて宣言する。

ところで、Symfony って、行末の ; (セミコロン)がなくてもいいのだろうか・・・。
 

ラッパー

Symfony では、グローバルテンプレート または レイアウト と呼ぶっぽい。

apps\(アプリ名)\templates

に格納する。デフォルトファイル名は layout.php
 

設定

YAML ファイルを用いる。
 

格納場所
アプリ全体
apps\(アプリ名)\config\view.yml

例)

  1. # apps/frontend/config/view.yml
  2. default:
  3.   http_metas:
  4.     content-type: text/html
  5.  
  6.   metas:
  7.     #title:        symfony project
  8.     #description:  symfony project
  9.     #keywords:     symfony, project
  10.     #language:     en
  11.     #robots:       index, follow
  12.  
  13.   stylesheets:    [main.css]
  14.  
  15.   javascripts:    []
  16.  
  17.   has_layout:     on
  18.   layout:         layout

 

モジュール(コントローラ)単位

必要な部分だけを記述。

apps\(アプリ名)\modules\(モジュール名)\config\view.yml
  1. # apps/frontend/modules/job/config/view.yml
  2. indexSuccess:
  3.   stylesheets: [jobs.css]
  4.  
  5. showSuccess:
  6.   stylesheets: [job.css]

 

複数定義

CSS などは

  1. stylesheets:    [main.css, jobs.css, job.css]
  2. stylesheets:    [main.css, jobs.css, job.css, print: { media: print }]

という書き方で複数定義する。

出力結果

  1. <link rel="stylesheet" type="text/css" media="screen" href="/css/main.css" />
  2. <link rel="stylesheet" type="text/css" media="screen" href="/css/jobs.css" />
  3. <link rel="stylesheet" type="text/css" media="screen" href="/css/job.css" />
  4. <link rel="stylesheet" type="text/css" media="print" href="/css/print.css" />

 

ヘルパーの利用
  1. use_helper('Text')

とすることで、ヘルパー(例の場合は Text ヘルパー群)をロードすることができる。
 

日付カラム

DB にタイムスタンプ型のカラムがある場合

  1. $job->getDateTimeObject('created_at')->format('m/d/Y');

ビュー内で上記のようにすることで、書式設定可能。
 

スロット

ヘルパー。

レイアウト領域が個別テンプレートに依存するとき スロット を定義する。
例)ページタイトル

apps/frontend/templates/layout.php
  1. <title><?php include_slot('title') ?></title>
  2.  
  3. <title>
  4.     <?php include_slot('title', 'Jobeet - Your best job board') ?>
  5. </title>
  6.  
  7. <title>
  8.     <?php if (!include_slot('title')): ?>
  9.         Jobeet - Your best job board
  10.     <?php endif ?>
  11. </title>

 

apps/frontend/modules/job/templates/showSuccess.php
  1. <?php slot('title') ?>
  2.     <?php echo sprintf('%s is looking for a %s', $job->getCompany(), $job->getPosition()) ?>
  3. <?php end_slot() ?>
  4.  
  5. <?php slot('title') ?>
  6.     <?php echo sprintf('%s is looking for a %s', $job->getCompany(), $job->getPosition()) ?>
  7. <?php end_slot() ?>
Posted by muchag | Symfony 1.x |
初回投稿:2011-06-03 (金) 12:20:13 | 最終更新:2011-06-03 (金) 21:13:28

コメントはまだありません »

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a comment