現在Cakephp3.8で画像アップロード機能を作ろうとしています。
画像を投稿すると'../webroot/img/' に保存されるのですが、DBには保存されません。
なのでindexページに投稿した画像を表示させることができません。
どうすればDBに保存できるのでしょうか?
###addページ
<div class="users form large-9 medium-8 columns content"> <form class="" action="" method="post" enctype="multipart/form-data"> <?= $this->Form->create($user,['type'=>'file']) ?> <fieldset> <?php echo $this->Form->control('name'); echo $this->Form->control('user_hobbies.0.hobby'); echo $this->Form->file('image'); ?> </fieldset> <?= $this->Form->button(__('Submit')) ?> <?= $this->Form->end() ?> </form> </div>
###コントローラー
public function add() { $user = $this->Users->newEntity(); if ($this->request->is('post')) { $fileName = $_FILES['image']['name']; if (!empty($fileName)) { $ext = substr($fileName, -3); if($ext != 'jpg' && $ext != 'gif' && $ext != 'png'){ $error['image'] = 'type'; } } $image = date('YmdHis') . $_FILES['image']['name']; move_uploaded_file($_FILES['image']['tmp_name'], '../webroot/img/' . $image); $_SESSION['join']['image'] = $image; $file = $this->request->getData('image'); //受け取り $user = $this->Users->patchEntity($user, $this->request->getData(), ['associated' => ['UserHobbies']]); if ($this->Users->save($user)) { $this->Flash->success(__('登録完了!')); return $this->redirect(['action' => 'index']); } $this->Flash->error(__('The user could not be saved. Please, try again.')); } $this->set(compact('user')); }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/29 08:45