2011/03/31

symfonyで掲示板作成、画像ファイル

php講習 3/31

掃除は西浜側でした。
今日も天気がいい。

1時間目
・昨日の続きで、返信の処理が出来ていない人は作成。

2時間目
・返信処理の答え合わせ
 
・名前の規則
テーブルのカラム名: comment_id
get                   getCommentId()
set                   setCommentID($tmp)

3時間目
・symfony,画像のアップロード
  formタグにenctypeの指定が必要
  <form action="/default/confirm"  method="post" enctype="multipart/form-data">
・動作確認
アクション
フォーム
・データ取得確認
次のプログラムの処理が終わるまでの間、一時ファイルとして保存される。
処理が終わればファイルは消されます。

Array
(
    [name] => title_oyama.jpg     # ファイル名
    [type] => image/jpeg          # 
    [tmp_name] => /tmp/phpkunfO6  # 一時ファイル置き場
    [error] => 0                  # 
    [size] => 5632                # ファイルサイズ
)

・ファイルはプログラムで移動しておく
if($photo["tmp_name"] != '') {
  session_regenerate_id();
  $tmpname = 'photo_' . session_id() .myUtil::getFileExt( $photo["tmp_name"] );

  $this->getRequest()->moveFile('photo',sfConfig::get('sf_upload_dir').'/tmp/'.$tmpname);
  $this->photo = $tmpname;
 }
4時間目
・ライブラリにファイルを追加
「symfony cc」してなかったら、クラスがないと言われてしまった。
・confirmアクションに追加
<?php if ($photo !=''):?>
<br>画像<br>
<img src="/uploads/tmp/<?php echo $photo ?>">
<input type="hidden" name="photo" value="<?php echo $photo ?>"><br />
<?php endif;?>

5時間目
・commentテーブルに項目photoを追加
alter table comment add photo text;
追加後、schema.yml作成、モデル作成
・画像の表示
indexSuccess.phpに追記
・時間のある人は返信にも画像を表示する。

6時間目
・投稿の表示順の指定方法追加
・ディレクトリ、ファイルの権限について説明
今回の場合だと、ディレクトリの所有者は一般ユーザ
画像ファイルをアップしたとき保存するのはapacheサーバ
なので、apacheユーザがファイルを書き込める設定にしている必要がある。

・返信の画像アップ機能を追加
テーブルに項目追加、yml、モデル作成
> alter table reply add photo text;
$ symfony propel-build-schema
$ symfony propel-build-model
$ symfony cc
replyディレクトリ作成
$ mkdir reply
$ chmod 777 reply

・処理変更(アクション、)

formタグにenctypeの指定が必要

・ファイルを複数送れるようにする。

0 件のコメント:

コメントを投稿