2011/04/11

symfonyで掲示板作成、部品化の復習、セッション

php講習 4/11

・今日は室内の当番だった、動くと暑い。

1時間目
・ログイン画面が出来ていない人は、
メールで送付したログインモジュールをfrontに入れてください。
ログイン後、一般ユーザでmypageが表示されるところで一度環境を合わせます。


2時間目
・アプリケーションを作ったらリライトルール等環境を整えるのは、
デフォルトでやって下さい。
・部品化のところから分からなくなった人が多かったので今日はです。
mypage/templates/layout.phpにヘッダーとフッターをパーシャル化する。

・mypageのCSSが反映されていない。
HTMLを参照するとCSSフォルダの参照は href="/mypage/css/main.css"となっている。
/はCentOS上は/bbs2/webなので、mypage用にcssのリンクを張る。
・パンくずリストのパーシャル化

・今やっていることは、backendと同じレイアウトを作ろうとしているので復習です。
・部品化はもう復習しないので、わからない人は自分で復習して下さい。

・メニューをスロットにする
スロットを読み込みたい場所にスロットを呼ぶ
・テンプレートにスロットの定義

・各テンプレートにメニューを追加することになる。
メニューを部品化
・メニューの内容をパーシャル化する。
<?php include_partial("global/menu");?>
_menu.phpへ内容を移す。

・午後はログインしたあとの処理


3時間目
・front/ログイン画面での練習
  print_r($this->getUser());で情報出力を確認する。
・ヘッダーにセッションで保存したニックネームを表示する
php  $this->getUser()->getAttribute('nickname', null, sfConfig::get('sf_session_name'))
テンプレート sf_user->getAttribute('nickname', null, sfConfig::get('sf_session_name'))

・mypageにログアウトモジュールを作成する
$ symfony init-module mypage logout
・ログアウトの処理は、認証、権限をクリアして、トップページにリダイレクト

・セキュア設定していて、認証されていないユーザがアクセスした場合の処理
symfonyでエラーになる。
default/login
権限を持っていないユーザがアクセスした場合
default/secure
設定していないので、エラー表示が出ている
Oops! An Error Occurred
The server returned a "500 Internal Server Error".
sfController->forward('default', 'login')

・setting.ymlの設定
#    login_module:           default   # To be called when a non-authenticated user
#    login_action:           login     # Tries to access a secure page
#
#    secure_module:          default   # To be called when a user doesn't have
#    secure_action:          secure    # The credentials required for an action

・次の時間でこの部分の処理を作成
mypageにmember_editモジュールを作成
$ symfony init-module mypage member_edit
inputのアクション
inputSuccess.php
パンくずとメニューを表示する。

4時間目
・member_editの処理でやっていることは、今までの処理と変わらない
テーブルからデータを取り出し、入力、確認、保存の流れ
・最初がセッションのメンバIDからテーブルに問い合わせて、あとは同じ流れ
$member_id = $this->getUser()->getAttribute('member_id', null, sfConfig::get('sf_session_name'));

・member_editが出来なかった人は自分で復習して下さい。

5時間目
・comment_listモジュールを作成する
$ symfony init-module mypage comment_list

・comment_listでは、自分のコメント一覧を表示したい
カラム追加
alter table comment add member_id int;
投稿したとき、自分のIDを入れる。

・セッションの値を表示する($this->getUser())

・セキュリティの関数
未認証済みにする     $this->getUser()->setAuthenticated(false);
認証済みかどうか     $this->getUser()->isAuthenticated();
権限を追加する     $this->getUser()->addCredential("member");
権限を持つかどうか     $this->getUser()->hasCredential("member");

・コメント編集で、フォームの前にチェックを入れIF文で分岐
コメントのmember_idとログインユーザのIDが一致していることを確認する。

・ログインして記事を投稿、member_idを設定する。
テーブルにmember_idのデータが入ることを確認する。

6時間目
・セッションからIDとニックネームを取得しているので、投稿の画面にある
ニックネームの入力をセッションからの出力に変更する。
・mypageに何かやるときはチェックする。
・コメント_editにIDを渡して編集している
$ symfony init-module mypage comment_edit
受け取る方で修正IDを受け取っている。
それをコメントテーブルに問い合わせて修正している。
ログインしているとき、別のIDを修正できてしまう。
これを防ぐために、コメントを投稿したIDとセッションのIDを比較する。
異なる場合は、/へリダイレクトする。
(そのコメントの編集権限がない)


今後の作業について
・明日から自主制作
水曜午後から企画の概要を発表:
サービス、DB構成、ページ遷移図(入力、確認、完了)
アプリケーション、モジュールの構成、フロント、バックエンドの機能など。
4/22金 午後発表

最終課題
自主制作課題を最終課題にしてもいい

0 件のコメント:

コメントを投稿