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)
・解説は明日
今、Smarty勉強してます。ややこしいです。
返信削除