☆複数画像UPとヘルパー
できてる人はアンケート
enquete_add
名前
性別(ラジオボタン)
興味のあること(チェックボックス)
コメント
画像
SQL
CREATE TABLE enquete(
id int not null auto_increment,
name text,
gender int,
hobby int ,
content text,
photo text,
created_at datetime,
primary key(id) );
ここで時間切れ。自習だぬー。
3時間目
☆ルーティング
ルーティングとは、URL マッピングとも呼ばれ、URLから判断して
使用するmoduleを決定する仕組み。
アクセスした時点でどこに飛ばすか、のコントロール機能。
場所はプロジェクト/apps/アプリケーション名/config/routing.yml
ルーティング名称(自由):
url: URL
param: {module: モジュール名, action: アクション名}
※default_symfonyの項目は保留
※URLに*でワイルドカード指定おk
ニュースモジュール作成とsymfony cc
symfony init-module front news
return sfView::SUCCESS;
/news/listにURLを変えるとほかページのリンク修正がめんどい。
そのときにルーティングで処理すると一括でできる。
デフォルトのURLを変更したいときにルーティングを使う。必要なければ使わなくてよい。
※入力ルールparamでは:の後、半角スペース必須。
つけたいルーティングは# default rules(ここから下削除不可)の上に置く。
実例
#news/listにURL変更。ルーティングルールは上位ほど強くなる。 newslist: url: /news/list param: { module: news, action: index }※routing.yml変更後は必ずsymfony cc
表示しないルールをつけることもできる。
newslist: url: /news param: { action: error404 }
IDの受け取り
コントローラー側
public function executeDatail() { print $id = $this->getRequestParameter("id"); //$this->id = $this->getRequestParameter("id"); return sfView::SUCCESS; }routing.yml側
newsdatail: url: /news/datail/:id param: { module: news, action: datail }http://www.shonanbbs.com/news/datail/33とか
http://www.shonanbbs.com/news/datail/1111とか入れると数字が出てくるよ
@ルーティング名にするとそのルーティング名に則ったURLにできる。
値はGETで示す。
newsモジュールに以下記述
4時間目
部品化
パーシャル
一番簡単な部品化の方法で、主にロジックを含まないテンプレートを部品化する際に使用する。
指定したモジュール名/templatesディレクトリに、_テンプレート名.phpというファイルを作成する。
読み込むコード
実例
layout.phpの<div id="contentRight">直下に記述。
モジュール名にglobalにすると一番上のモジュールを指定できる。
templates直下に\menu.php作成し、
MENU
会員登録
とかを切り取って貼り付け。
◆練習問題
ヘッダーとフッターをpartial化
◆練習問題
sharedモジュール作成、templateはmessageでお知らせ文作成
<?php include_partial("shared/message");?> _message.php <div style="boader: 2px; padding: 10px; background-color:#DF8713; margin:10px 0px;"> 管理者からの大切なお知らせ。 こちらをごらんください。 </div>
member_addとか無いからlayoutにはっつけちゃったYO。
☆スロット
templateからlayoutを操作したい場合に利用
◆練習。
layoutでtemplate作成。 <div id="pankuzu"> <?php include_slot("pankuzu");?> </div> indexSuccessでインクルード。 <?php slot('pankuzu');?> HOME <?php end_slot();?>
5時間目
◆練習問題 パンくずを実装
ヘルパー練習ページでも適用できるよ <?php slot('pankuzu');?> <?php echo link_to("HOME","/member/list")?>>ヘルパーの練習 <?php end_slot();?> CSS #pankuzu { boder-bottom:1px dotted #ddd; padding-bottom:5px; }◆練習問題 タイトルを変えてみよう
layout.phpの<?php include_title() ?>を <title><?php include_slot("title") ?></title>に変える indexSuccessはこう <?php slot('title');?> TOP | SHONANBBS <?php end_slot();?>
◆補足。関数利用可能
titleというスロットがあればtemplateを読み込むifが使える。 <title><?php if(has_slot("title")):?> <?php include_slot("title") ?> | <?php endif;?> SHONANBBS</title> templateがより省略できる <?php slot('title');?> TOP <?php end_slot();?>
◆スロットとパーシャルの組み合わせ
layoutのパーシャル切り取り、以下に変更 <?php include_slot("sidemenu");?> <?php slot('sidemenu');?> <?php include_partial("global/menu", array('now' => 'top'));?> <?php end_slot();?> ヘルパーページ <?php slot('sidemenu');?> <?php include_partial("global/menu", array('now' => 'help'));?> <?php end_slot();?> _menu.php <?php if ($now == "top"):?> <a href="/" class="nowpage">TOP</a><br> <?php else :?> <a href="/">TOP</a><br> <?php endif;?> <?php if ($now == "help"):?> <a href="/default/help" class="nowpage">ヘルパーの使い方</a><br> <?php else :?> <a href="/default/help">ヘルパーの使い方</a><br> <?php endif;?>
6時間目
◆練習もっかいパーシャル。
<?php include_partial("global/ad");?> <div class="ad"> 広告です。 </div>
☆コンポーネント
パーシャルにロジックが加わったものがコンポーネント。
部品化したいが、その部品を作成するためにはデータベースからデータを取得する
必要がある場合に使用される。
◆練習問題
member_listモジュール無い人は追加
sidemenuにmemberlistを出してみよう。
bbs2/apps/front/modules/shared/templatesに_memberlist.php作成 メンバー一覧 <?php foreach ($members as $member):?> <div class="sidelist"> <?php echo $member->getNickname();?> </div> <?php endforeach;?> bbs2/apps/front/modules/shared/actionsにcomponents.class.php作成 <?php class SharedComponents extends sfComponents { public function executeMemberlist(){ $c = new Criteria(); $this->members = MemberPeer::doselect($c); } }
◆練習問題
最新のコメント5件をsidemenuに出してみよう。
bbs2/apps/front/modules/shared/templatesに_newreplyt.php作成 最新の返信 <?php foreach ($replys as $reply):?> <div Class="sidelist"> <?php echo $reply->getContent();?> </div> <?php endforeach;?> bbs2/apps/front/modules/shared/actions/components.class.phpの memberlistの直下に作成 public function executeNewreply(){ $c = new Criteria(); $c->addDescendingOrderByColumn(ReplyPeer::CREATED_AT); $c->setlimit(5); $this->replys = ReplyPeer::doselect($c); }
あと_menuの各項目に<div class="sidelist">つけてねー。
今日は何とかついてこれた~~~~。ふぅ。
んで追加のCSS。適宜応用よろ。
#pankuzu { boder-bottom:1px dotted #ddd; padding-bottom:5px; } .nowpage { background-color:#FAB6D6; padding:1px; margin-bottom:1px; } .ad { border:1px solid #ddd; padding:10px; background-color:#D1DEE0; } .sidelist { border-bottom:1px solid #ddd; padding:5px 0px; }
0 件のコメント:
コメントを投稿