2012年07月06日
講義093日目
------------------------------1H------------------------------
★symfony復習
●ヘルパー
・テンプレート側で使う関数
フォームヘルパー
バリデーションヘルパー
リンクヘルパー
routhing.ymlで設定したリンク先を使うこともできる
・テンプレート側
<?php echo link_to("サイトマップ","@sitemap_sub")?>
・routhing.yml
sitemap_sub:
url: /sitemap
param: { module: default, action: sitemap }
・ヘルパーのカスタマイズ
授業で使ったページャ用のヘルパーはsymfonyで用意されたものではなく自作のヘルパー
<?php use_helper("MyPagerQuery", "Validation")?>
引数は一つ以上もつことができる
☆バリデーションの流れ
①submitボタン押す
②sfValidateクラスが動く
③作成したmodule/validate/submit.ymlのエラーチェックを確認
④executeHandleErrorが動く
⑤ヘルパーのform_errorが実行され、エラーがでる←ヘルパー<?php use_helper("Validation")?>が機能する場所はココ
<?php echo form_error("");?>でエラーメッセージを表示させる
------------------------------2H------------------------------
★symfony復習
●部品化
・パーシャル
テンプレートのみ
指定したモジュールのテンプレートを読み込む場合は
include_partial("モジュール名/テンプレート名")
複数のモジュールで使用する場合、apps/templateに設置する
その場合は、include_partial("global/テンプレート名")で呼び出す
☆パーシャルでデータを渡す
テンプレート側
<?php include_partial("global/page_discription", array("mes" => "コメントの詳細ページ"))?>
パーシャル側
<?php echo $mes?>で変数として受け取れる
配列も受け取ることができる
注意:変数が存在しない場合にエラーが出てしまうので
<?php echo (isset($mes))?$mes:"メッセージなし";?>
のように三項演算子でチェックしておくのがいい
------------------------------3H------------------------------
★symfony復習
●部品化
・スロット
データの部品化
メタ情報を書き換えたりするときに使う
・テンプレート
<?php slot("footer_mes");?>
内容
<?php end_slot;?>
・レイアウト
<?php include_slot("footer_mes");?>
☆has_slot()
slotがあるか確認する関数、返り値はtrueかfaulse
☆スロット内でパーシャルを呼び出したりとかも可能
------------------------------4H------------------------------
★symfony復習
●部品化
・コンポーネント
ロジックとテンプレート
・action
components.class.php
・template
_テンプレート名Success.php
・componentだけのモジュールを作成する
・compshareモジュールを作成
symfony init-mod front compshareコマンドを打つ
・components.class.php
class compshareComponents extends sfComponents{
public function executeAccessCheck()
{
}
}
・_accessCheck.php
コンポーネントのテンプレートにはSuccessは付けない
・default/template/sitemapSuccess.phpでコンポーネントを呼び出す
<?php include_component("compshare", "accessCheck")?>
------------------------------5H------------------------------
★symfony復習
●エラーチェック
・backendにnews_addモジュールを追加
newsを投稿できるactionを作成
public function executeSubmit()
{
//データベースに接続
$news = new News;
$news->setTitle($this->getRequestParameter("title"));
$news->setArticle($this->getRequestParameter("article"));
$news->setDeleteFlg("n");
$news->save();
$this->redirect("/");
}
・バリデーション(エラーチェックを入れる)のために
送信先のアクション名でvalidate/submit.ymlの作成
・yamlファイルの項目
・required:
入力されているかどうかをチェック
☆注意☆
フォームのmethodは"post"でないとバリデーションが効かない
------------------------------6H------------------------------
★symfonyテスト
-----------------------------memo------------------------------
0 件のコメント:
コメントを投稿