2011年3月23日水曜日

3/23覚書

腰痛のため4時間目後半から参加。
詳しくは講習の記録をご参照くだされ。

☆準備でちゃんと聞けなかったところ
actions.class.phpの
public function executeIndex()
indexSuccess.php
太字の箇所は同じ名前にする。

ちょっと言い換えてみる。
actions.class.phpで
public function execute動的処理()
出力処理Success.php
この関係は同じ変数で管理するというイメージがいいのかな。
あと大事なこと。executeの後の項目名は最初大文字で。しないと動かないよ。



☆URLとアクションの関係
Symfonyではモジュール+アクションのページ構成が基本となる。
【例】
member_addモジュールのinputアクションにアクセスするとき。
http://www.shonanbbs.com/member_add/input

あと、Virtualhostの設定間違えてた・・・_| ̄|○ゴメンヨー
<VirtualHost *:80>
    ServerName www.kikin.com
    DocumentRoot /home/kikin/web

    <Directory "/home/kikin/web">
        AllowOverride All
        Options -Includes -ExecCGI
    </Directory>

</VirtualHost>

<VirtualHost *:80>
    ServerName www.shonanbbs.com
    DocumentRoot /home/user(要修正)/bbs2/web

    <Directory "/home/user(要修正)/bbs2/web">
        AllowOverride All
        Options -Includes -ExecCGI
    </Directory>
</VirtualHost

以上を踏まえて練習問題。
☆bbs2にblogモジュールを作って出力。

1.PuTTYから一般ユーザーでbbs2に移動→以下実行
symfony init-module front blog
Eclipceに移動→F5で/bbs2/apps/front/modules/blogができてるよ。

2.そこのaction.class.phpを開いたら、
$this->forward('default', 'module');をコメントアウトか
return sfView::SUCCESS;に置き換えちゃおう。

これの意味の詳しいのは基金訓練WEBで。
基本return sfView::SUCCESS;しか使わないようだけどね。

3./blog/templatesのindexSuccess.phpに何か書いてみよう。

4.http://www.shonanbbs.com/blogにアクセス。


5時間目
CSSのこと。

まあこれもFizzBuzzできてりゃなーんとなくわかると思う。
Symfony+CSS使いはかーなーり、重宝されるそうな。
CSSはテンプレサイトいっぱいあるし、見た目で選べるから楽だよ。

CSSでIDは1ページにひとつだけ。クラスは何個でもOK。
実際に作ってみました。

/bbs2/apps/front/templates/layout.php
ちょっとだけ崩れてるかも。ごめんよう。
<div id="header">
SHONANBBS
</div>

<div id="contentWrappr">
<div id="contentLeft">
<?php echo $sf_data->getRaw('sf_content') ?>
</div>

<div id="contentRight">
MENU
<a href="/member_add/input">会員登録</a>
</div>

<div class="clr"></div>
</div>

<div id="footer">
COPYRIGHT © SHONANBBS
</div>

/* */CSSのコメントアウトだよー。
/bbs2/web/css/main.cssの記述
ちょっと違ってるかもだけどごめん。

/* ヘッダ情報 */
#header {
border-bottom:1px solid #ddd;
margin-bottom:10px;
background-color:#228b22;
}
/* ページ全体のレイアウト */
#contentWrappr {
width:850px;
margin:0 auto;
}
/* 左段落レイアウト */
#contentLeft {
width: 600px;
float: left;
}
/* 右段落レイアウト */
#contentRight {
width: 250px;
float: right;
}
/* フッター情報 */
#footer {
border-bottom: 1px solid #ddd;
margin-bottom:10px;
}
/* フロート処理クリア */
.clr {
clear: both;
}

つかCSS久々過ぎて構文吹っ飛んでたさ・・・。
思い出したら馬鹿さ加減でもうね。・ ゚・。* 。 +゚。・.。* ゚ + 。・゚・(ノД`)

ちょっとメモ。
デバッグ用アドレス*****_dev.php/
【例】front_dev.php/

☆練習問題

user_addモジュールにinput、confirm、resultのactionを入れよう。
ページの内容は名前を入力→確認→完了の流れで作ろう。
できたらMENUの下に会員登録ってリンクつけてね。

ちょwwwレヴェル高杉wwwww
でした。
その前の段階のあることをやってなかったもんで;

同時進行でやるとケアレスミス多発でした。
構文は間違ってないのにページ出ねえぇええええ!

☆どうもPOSTやGETの説明だったみたい。

actionでは
$this->変数 = $this->getRequestParameter("変数");
これだけでPOSTもGETも処理するんだって。

defaultのaction.class.phpに記述。
  public function executeIndex()
  {
 $this->name = $this->getRequestParameter("name");
 $this->address = $this->getRequestParameter("address");
 $this->hobby = $this->getRequestParameter("hobby");
   return sfView::SUCCESS;
  }
で、View側。
HELLO! ENOSHIMA!<br>

私の名前は<?php echo $name;?>です。<br>
住所は<?php echo $address;?>です。<br>
趣味は<?php echo $hobby;?>です。<br>

<hr>

<form action="/" method="POST">
名前:<input type="text" name="name"><br>
住所:<input type="text" name="address"><br>
趣味:<input type="text" name="hobby"><br>
<input type="submit" name="send" value="送信">
</form>

このとき最初は表示されなくて、すごく悩んでいたんでつが・・・気づかなかったんでつよ。
formがfromとか。

なんかね、もう。ばかばかばかばかばかばか。

あとは、別actionのページ作ってください、ってとき。
newsSuccess.phpと書かねばならないところを、
news.Success.phpとか書いてた・・・・・・・・・・・・。


・ ゚・。* 。 +゚。・.。* ゚ + 。・゚・(ノД`)


それからやっとこの意味がわかった。

対応するビューは各モジュールのtemplatesディレクトリに次のような命名ルールで関連付けられています。

アクション名 + ビューの種類.php

わかるとなんでもないことなんだよなああああああああああ。

明日は這ってでも行くんで、腰痛よ、治まってくれ~~~~。


以下超ネタバレ。今後のために自力解決推奨。

1.PuTTY一般ユーザーからbbs2で以下実行
symfony init-module front member_add

2.action.class.phpを下記に変更
  public function executeConfirm()
  {
 $this->name = $this->getRequestParameter("name");
   return sfView::SUCCESS;
  }
  public function executeInput()
  {
   return sfView::SUCCESS;
  }
  public function executeResult()
  {
   $this->name = $this->getRequestParameter("name");
   return sfView::SUCCESS;
  }

3.以下のページ作成
/bbs2/apps/front/modules/member_add/templates/confirmSuccess.php
中身
名前:<?php echo $name;?>です。<br>

<hr>

<form action="/member_add/result/" method="POST">
<input type="hidden" name="name" value="<?php echo $name;?>">
<input type="submit" name="send" value="完了">

</form>

/bbs2/apps/front/modules/member_add/templates/inputSuccess.php
中身
メンバ登録!<br>

<hr>

<form action="/member_add/confirm/" method="POST">
名前:<input type="text" name="name"><br>
<input type="submit" name="send" value="確認">
</form>
/bbs2/apps/front/modules/member_add/templates/resultSuccess.php
中身
完了しました。

4.http://www.shonanbbs.com/member_add/inputでテスト。