2012年7月6日金曜日

2012年07月06日 講義093日目

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 件のコメント:

コメントを投稿