Cekephpで音楽投稿サイトを作っているのですが、データベースに登録した音楽データをオーディオタグに渡す方法で躓いています。
投稿した音楽データはデータベースに登録されています。
pr()を使って変数の中身を見ると
../webroot/music/sumple.mp4
と出ているのでこれを
<audio src=<?= '../webroot/music/' . $postmusic->music_data ?>
のように書けば上手く行くと思ったのですが、再生されません。
パスの指定も間違えていないと思うのですが、、、
わかる方、いましたらどうかお助けください。
###開発環境
cakephp4
php7.2
MAMPにてローカル開発環境を構築
###Viewページ
<?php /** * @var \App\View\AppView $this * @var \App\Model\Entity\Postmusic $postmusic */ ?> <div class="row"> <aside class="column"> <div class="side-nav"> <h4 class="heading"><?= __('Actions') ?></h4> <?= $this->Html->link(__('Edit Postmusic'), ['action' => 'edit', $postmusic->id], ['class' => 'side-nav-item']) ?> <?= $this->Form->postLink(__('Delete Postmusic'), ['action' => 'delete', $postmusic->id], ['confirm' => __('Are you sure you want to delete # {0}?', $postmusic->id), 'class' => 'side-nav-item']) ?> <?= $this->Html->link(__('List Postmusic'), ['action' => 'index'], ['class' => 'side-nav-item']) ?> <?= $this->Html->link(__('New Postmusic'), ['action' => 'add'], ['class' => 'side-nav-item']) ?> </div> </aside> <div class="column-responsive column-80"> <div class="postmusic view content"> <h3><?= h($postmusic->title) ?></h3> <table> <tr> <th><?= __('Music Data') ?></th> //ここのデータの渡し方がうまくいっていない? <td><audio src=<?= '../webroot/music/' . $postmusic->music_data ?> controls></audio></td> </tr> <tr> <th><?= __('Title') ?></th> <td><?= h($postmusic->title) ?></td> </tr> <tr> <th><?= __('Id') ?></th> <td><?= $this->Number->format($postmusic->id) ?></td> </tr> </table> </div> </div> </div>
public function view($id = null) { $postmusic = $this->Postmusic->get($id, [ 'contain' => [], ]); $this->set(compact('postmusic')); } public function add() { $postmusic = $this->Postmusic->newEmptyEntity(); if ($this->request->is('post')) { pr($_FILES); exit; $music = $_FILES['music_data']['name']; move_uploaded_file($_FILES['music_data']['tmp_name'], '../webroot/music/' . $music); //$_SESSION['join']['stamp'] = $music; $new_data = $this->request->getData(); $new_data['music_data'] = $music; $postmusic = $this->Postmusic->patchEntity($postmusic, $new_data); if ($this->Postmusic->save($postmusic)) { $this->Flash->success(__('The postmusic has been saved.')); return $this->redirect(['action' => 'index']); } $this->Flash->error(__('The postmusic could not be saved. Please, try again.')); } $this->set(compact('postmusic')); }
回答2件
あなたの回答
tips
プレビュー