「CakePHP3」記事投稿機能関連を編集 delete・view 編【入門】

カテゴリー:PHP

前回、Articles関連のedti関連のファイルを編集して、投稿された記事の編集ができるようになったので、今回は、投稿した記事を削除できるようにしていくのと投稿記事の個別表示部分を編集していきます。

Controller ArticlesController.php Delete methodを編集

src/Controller/ArticlesController.phpのDelete methodを編集していきます。

前回同様、bakeで作成したので、articlesのidを渡す形になっているのをslugを渡すよう下記のように変更します。

    public function delete($slug = null)
    {
        $this->request->allowMethod(['post', 'delete']);
        $article = $this->Articles->findBySlug($slug)->firstOrFail();
        if ($this->Articles->delete($article)) {
            $this->Flash->success(__('The article has been deleted.'));
        } else {
            $this->Flash->error(__('The article could not be deleted. Please, try again.'));
        }

        return $this->redirect(['action' => 'index']);
    }

これで削除ができるようになりました。ここまで全ての工程が完了すると記事の新規投稿・編集・削除ができるようになります。

Controller ArticlesController.php View methodを編集

View methodも「edit・delete」同様、bakeで作成したので、articlesのidを渡す形になっているのをslugを渡すよう下記のように変更します。

table内のtdタグ、クラスにactionが付与されている箇所を下記のように編集します。

    public function view($slug = null)
    {
        $article = $this->Articles->findBySlug($slug)->firstOrFail();

        $this->set('article', $article);
    }

これでControllerのView methodの編集は完了です。

Template Articles view.ctp を編集

続いてsrc/Template/Articles/view.ctpを編集していきます。

  <nav class="large-3 medium-4 columns" id="actions-sidebar">
    <ul class="side-nav">
      <li class="heading"><?= __('Actions') ?></li>
      <li><?= $this->Html->link(__('Edit Article'), ['action' => 'edit', $article->slug]) ?> </li>
      <li><?= $this->Form->postLink(__('Delete Article'), ['action' => 'delete', $article->slug], ['confirm' => __('Are you sure you want to delete # {0}?', $article->id)]) ?> </li>
      <li><?= $this->Html->link(__('List Articles'), ['action' => 'index']) ?> </li>
      <li><?= $this->Html->link(__('New Article'), ['action' => 'add']) ?> </li>
      <li><?= $this->Html->link(__('List Users'), ['controller' => 'Users', 'action' => 'index']) ?> </li>
      <li><?= $this->Html->link(__('New User'), ['controller' => 'Users', 'action' => 'add']) ?> </li>
      <li><?= $this->Html->link(__('List Tags'), ['controller' => 'Tags', 'action' => 'index']) ?> </li>
      <li><?= $this->Html->link(__('New Tag'), ['controller' => 'Tags', 'action' => 'add']) ?> </li>
    </ul>
  </nav>
  <div class="articles view large-9 medium-8 columns content">
    <h3><?= h($article->title) ?></h3>
    <table class="vertical-table">
      <tr>
        <th scope="row"><?= __('User') ?></th>
        <td><?= $this->Html->link($article->user_id, ['controller' => 'Users', 'action' => 'view', $article->user_id])?></td>
      </tr>
    !-- 省略 -->
    </table>
    !-- 省略 -->
  </div>
  

上記編集完了後に投稿記事の個別ページに進むと表示やリンクの設定が動作するようになっています。

これでCakePHP3でユーザー登録関連に続き投稿関連も完了です。次回以降は投稿にタグを設定できるようにしていきます。

参考:CakePHP3「クイックスタートガイド」


タグ

関連する投稿

ドラクエ好きな社会保険労務士有資格者・ファイナンシャルプランナー技能士検定2級正会員が運営をしています。当ブログではDQMSLを中心にWordPress・HTML・CSS・JS・PHPなどのTips備忘記録や資格関連の情報、その他雑記を発信して行きます。