ビューの基本

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

1件のコメント »

  1. Comment by android apk — 2019/8/19 月曜日 @ 15:13:58

    Although an Android app can be made accessible by developers through their websites, most Android programs have been uploaded
    and published on the Android Market, an online store dedicated to these applications.
    The Android Market includes both free and expensive apps.

    Android programs are written in the Java programming
    language and use Java core libraries. They are compiled to Dalvik executables to run on the Dalvik virtual machine,
    which is a virtual machine especially designed for portable devices.

RSS feed for comments on this post. TrackBack URI

Leave a comment