2011/03/23

symfony概要説明

php講習 3/23

・今日は、外の掃除。意外と寒い。

1時間目
・昨日の復習から
Webテキストに従って、symfonyの概要説明
プロジェクト、アプリケーション作成
phpプログラムを変更して表示出来るようにした。

・linuxで作業するときは、自分のいるところ(フォルダ)を認識しておく
$ pwd
/home/user/bbs2/apps/front

・モジュールは、modulesディレクトリに入っています。
defaultモジュールを確認する。

・プロジェクト直下(bbs2直下)に移動
  一度、front以下を削除
  再度、frontアプリケーションを作成
  $ symfony init-app front
  defaultモジュール作成
  $ symfony init-module front default


2時間目
・「actions.class.php」は処理を書くところ、アクションの説明はあとで
/home/teacher/bbs2/apps/front/modules/default/actions/actions.class.php
記述を修正
関数executeIndex()の「execute」を除いた部分がアクション名(index)
return sfView::SUCCESS;
→テンプレートでindexSuccess.phpを使う。

・アクションの説明
データベース操作(CRUD)
create
read
update
delete

・アクションの機能
   1. リクエストパラメータ(GETやPOSTで渡ってくる値)の取得
   2. モデルを使用したデータベース操作(CRUD)
   3. viewに渡す変数のアサイン
   4. テンプレートの種類の決定
smartyで3の機能は使ったし、4のテンプレートも使っています。

1.リクエストパラメータの取得
・getでurlから渡す方法
http://www.user.com/?id=20
print $this->getRequestParameter('id');
パラメータをテンプレートに渡す
(Webテキストはスペルが違っているのでコピーするときは注意)

・URLでパラメータを設定し、テンプレートに渡す
http://www.user.com/?name=name&adr=pref


3時間目
・2時間目の答え合わせ(アクションで受け取る、テンプレートに渡す)
・POSTで渡せるようフォームを作成
フォームのタグは問題なく書けるようになっておいて下さい。
→今日の最後の課題で実際使いました。

1.リクエストパラメータの取得
3:viewに渡す変数のアサイン

4:テンプレートの種類の決定
「sfView::SUCCESS」以外のアクションの種類はあまり使わない。
基本的には、「sfView::SUCCESS」をreturnする。

return sfView::XXXXX (SUCCESS)アクション名 + ビューの種類.php(例 indexSuccess.php)

アクションを追加して動きを確認する
executeNews()
executeArticle()

テンプレートも追加
newsSuccess.php
articleSuccess.php

呼び出し
ドメイン名 + /default(モジュール名)/action名
何もなしだと、/default/indexアクションに飛ぶ
それ以外だと、指定(/モジュール名/アクション名)が必要


4時間目
・URLとモジュール/アクション/関数名の関係は重要です。
(これが今日の授業のポイントです)
・アクションを5個新たに作成して表示する。
・blogモジュールを追加して、indexアクションから表示する。

・フォームのモジュール名、アクション名を指定してパラメータを受け渡す。
フォームの飛び先は(ドメイン名+)/モジュール名/アクション名

5時間目
・Viewの説明
   1. 「レイアウトテンプレート」+「アクションで作成されるテンプレート」の組み合わせである
→これから説明
   2. HTMLの記述や、処理を簡略化するためのヘルパーという機能が使える
     →ヘルパーの項目で説明(明日以降?)
   3. 共通で使うViewを部品化できる(パーシャル、スロット、コンポーネント)
     →別の機会に説明(明日以降?)
   4. テンプレートには素のPHPを記述できる
     →いままで作業してきた通り。
      smartyのように特殊な書き方はありません。

・Webで表示されたsymfonyページのソースを参照(ctr+U)
テンプレートの記述にあるソース(indexSuccess.php)と比較する。
bodyタグ以外の部分の記述は、以下のファイルに記述(アプリケーション共通部分)
apps/front/templates/layout.php
アプリケーション共通部分以外は、以下に入る。
<?php echo $sf_data->getRaw('sf_content') ?>

・CSSの記述
<link rel="stylesheet" type="text/css" media="screen" href="/css/main.css" />
symfonyのcssはプロジェクト直下にある。
web/css/main.css

・CSSの解説
idはページ内に1つだけ
クラスは、同じページに何個あってもいい
headerの場合、ページ内にheaderを記述するのは1回のみなのでIDで設定。


6時間目
CSSを別(main.css)に記述
layout.phpで、HTMLの可読性が上がっていることがわかる。

・今日最後の課題:member_add modを作成し、アクション3個設定
input、confirm、resultアクションを作成
$ symfony init-module front member_add

・機能
名前入力 →postで名前を渡す
確認画面 →post(hidden)で名前を渡す
完了画面

・出来たら、メニューの下に「会員登録」でリンクを張る
リンク先は、ドメイン名+/モジュール名/アクション名(/member_add/input)
・解説は明日

1 件のコメント: