質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

Q&A

解決済

1回答

356閲覧

cakephp3 にてviewのURLを直接変更された場合

nerd

総合スコア37

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

0グッド

0クリップ

投稿2018/10/29 03:14

cakephp3 にて勉強中なのですが

news テーブル id name

cakephp3 にて、bakeをして、コントローラー、ビュー、モデルを作成を行った状態です。

3個ほどデーターを挿入し、viewで見ると
news/view/3
で無事表示されます。

ですが
news/view/4
とまだ登録されていないidをurlに直接書き込んだ場合
指定されたidはないと怒られます。

取得をしに行ったIDを持っていないことによるエラーだと思い、下記内容をコントローラーに追加したのですが、
エラーはそのままでした。

$new = $this->News->get($id, [ 'contain' => [] ]); if($new->isEmpty()){ echo '内容'; }

実現したい内容としては、登録されていないIDでURLを訪ねられたら、news一覧ページにリダイレクトをさせたいです。

初歩的な制御の問題で恐縮ですが何卒ご尽力お願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

get() は0件の場合は例外となり、何もしなければその場で404となります。

https://book.cakephp.org/3.0/ja/orm/retrieving-data-and-resultsets.html#Cake\ORM\Table::get

get の操作がどの結果も見つけられない場合は、 Cake\Datasource\Exception\RecordNotFoundException が発生します。 この例外を catch してもいいですし、CakePHP に 404 エラーへと変えさせてもかまいません

php

1try{ 2 $new = $this->News->get($id); 3}catch(RecordNotFoundException $e){ 4 return $this->redirect(['action' => 'index']); 5}

isEmpty を使うのであれば...

$new = $this->News->find()->where(['id' => $id]); if($new->isEmpty()){ return $this->redirect(['action' => 'index']); }

投稿2018/10/29 06:47

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nerd

2018/10/29 09:28

mosaxiv 様 ご回答ありがとうございます! try catch !!!!! ご指摘いただいてああああとなりました。 サンプルコードまでありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問