reply_add実装続き
2時間目
reply_add実装
idを引き継ぐ処理以外は基本おなじなのだねー。
ていうかそのreplyを表示させるのががが。
3時間目
画像アップロード
[name] => notice01.jpg
[type] => image/jpeg
[tmp_name] => /tmp/phpyCW55n
[error] => 0
[size] => 83218
ファイル送信時次のプログラムの処理が終わるまでの間、
サーバーのTEMPディレクトリに一時保管されている。
sleep(20);を加えると20秒間処理を止めるので、
その間にPuTTYからrootで入ってcd /tmpで中身を見ると、
-rw------- 1 apache apache 83218 3月 25 16:25 phpJNeLpc
ってファイルがsleepで設定した時間分だけ確認できる。
処理が終われば消える。
4時間目
画像アップロード処理続き
TEMPディレクトリ作成とパーミッション変更
cd web/uploads
mkdir tmp
chmod -R 777 tmp
画像のアップロード
実際に表示させてみる
5時間目
photoカラム追加
ALTER TABLE comment ADD photo text;
schema.yml、model作成
/web/images/commentディレクトリ作成
chmod 777 commentでパーミッション作成
あと画像表示
できたらpreplyも。
replyカラム+/web/images/replyカラムつけてね。
6時間目
あと画像表示
できたらpreplyも
作業続き
めんどいからここでコード。
action.class.php
<?php
class reply_addActions extends sfActions
{
public function executeConfirm()
{
$this->id = $this->getRequestParameter("id");
$this->name = $this->getRequestParameter("name");
$this->coment = $this->getRequestParameter("coment");
$photo = $this->getRequest()->getFile('photo');
if($photo["tmp_name"] != '') {
//保存する画像名はセッションID生成し付与
session_regenerate_id();
//myUtil::getFileExtで拡張子判別。帰り値は._gif._png._jpg
$tmpname = 'photo_' . session_id() .myUtil::getFileExt( $photo["tmp_name"] );
//web/uploads/tmpへ画像を移動する
$this->getRequest()->moveFile('photo',sfConfig::get('sf_upload_dir').'/tmp/'.$tmpname);
//templateにパスを渡している
$this->photo = $tmpname;
}
return sfView::SUCCESS;
}
public function executeInput()
{
//GETで渡されてくるコメントID
$id = $this->getRequestParameter("id");
$this->comment = CommentPeer::retrieveByPK($id);
$this->photo = $this->getRequestParameter("photo");
return sfView::SUCCESS;
}
public function executeResult()
{
//idとnameとmailを変数にして渡す。
$id = $this->getRequestParameter("id");
$name = $this->getRequestParameter("name");
$coment = $this->getRequestParameter("coment");
//replyのupdate
//インスタンス化。空のオブジェクトを生成。
$reply = new Reply();
//変数にした名前とメールを入力。
$reply->setCommentid("$id");
$reply->setNickname("$name");
$reply->setContent("$coment");
//insert文発行
$reply->save();
$photo = $this->getRequestParameter('photo');
//画像の存在判定
if($photo != '') {
///uploads/tmp/'.$photoから画像を取得
$src = sfConfig::get('sf_web_dir').'/uploads/tmp/'.$photo;
//最新(投稿と同一)のidを取得(autoincrement稼動時)
$saveName = $reply->getId().myUtil::getFileExt($src);
//TEMPから/images/comment/".$saveNameへ保存
$dst = sfConfig::get('sf_web_dir')."/images/reply/".$saveName;
rename($src, $dst);
$reply->setPhoto($saveName);
$reply->save();
}
return sfView::SUCCESS;
}
}
inputSuccess.php
このコメントに返信します <div> <?php echo $comment->getContent();?> <?php if($comment->getPhoto()):?> <img src="/images/comment/<?php echo $comment->getPhoto();?>"><br><br> <?php endif;?> </div> <div class="line"> </div> 返信フォーム<br> <form action="/reply_add/confirm" method="post" enctype="multipart/form-data"> <textarea name="coment"></textarea><br> ニックネーム<input type="text" name="name" size="20"> <br> <input type="file" name="photo"><br> <input type="hidden" name="id" value="<?php echo $comment->getId();?>"> <input type="submit" value="確認する"> </form>confirmSuccess.php
<form action="/reply_add/result" method="post"> 返信内容<br> <?php echo $coment;?> <input type="hidden" name="coment" value="<?php echo $coment;?>"> <br> ニックネーム<br> <?php echo $name;?> <br> 画像<br> <?php if($photo !=""):?> <img src="/uploads/tmp/<?php echo $photo?>"> <br><br> <div class="line"></div> <input type="hidden" name="photo" value="<?php echo $photo;?>"> <?php endif;?> <input type="hidden" name="name" value="<?php echo $name;?>"> <input type="hidden" name="id" value="<?php echo $id;?>"> <br> <input type="submit" value="確認する"> </form>
resultSuccess.php
完了しました。 <a href="/">トップに戻る</a>
パーミッション解説
自分とグループと他人に対してのアクセス権限。
ファイルへの読み(read) 書き(write) 実行(execute)についての権限を与えること。
できる人だけ。
アップロード3つぐらい送って見る。
複数の条件がどーしても思い浮かばない・・・
$photoをどこで複数化するんだああああ。
おまけ
ntpやってなかったので設定。
教科書のサーバー構築の一番下にあるntp設定やればいいよ。
あとcreated_atの表示で詰まった。
_含むばあいは_取っていいみたい。
例】
投稿日時getCreatedat();?>







