Исключение «не найдено» в роуте Laravel

D
На сайте с 28.06.2008
Offline
996
75

Не смог найти в сети примера как в такой роут добавить исключение, чтобы если ID не найден выдавало 404 ошибку.

Доки читал, но так и не понял как мне нужно изменить мой роут.

Сейчас у меня роут такой

Route::get('/post/{id}', 'PostModelController@getOne')->where('id', '\d+');


V
На сайте с 16.05.2009
Offline
204
#1
Dram :

Не смог найти в сети примера как в такой роут добавить исключение, чтобы если ID не найден выдавало 404 ошибку.

Доки читал, но так и не понял как мне нужно изменить мой роут.

Сейчас у меня роут такой


В контроллере проверяйте если id не найден -> редирект на 404
D
На сайте с 28.06.2008
Offline
996
#2
vitor #:
В контроллере проверяйте если id не найден -> редирект на 404

Нет там как то проще, есть метод по умолчанию 

findOrFail($id);

не пойму как и где его применить, пробую в контроллере

<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Post;

class PostModelController extends Controller
{
    public function post($order = 'date', $dir = '')
    {
        if($dir=='desc'){
            $posts = Post::all()->sortByDesc($order);
        }else{
            $posts = Post::all()->sortBy($order);
        }
        return view('test.post', ['posts' => $posts]);
    }
    public function getOne($id)
    {
        $post = Post::find($id)->findOrFail($id);
        return view('test.postOne', ['post' => $post]);
    }
}

но получаю ошибку 

Call to a member function findOrFail() on null
V
На сайте с 16.05.2009
Offline
204
#3
Замените
$post = Post::find($id)->findOrFail($id);

На

$post = Post::findOrFail($id);
D
На сайте с 28.06.2008
Offline
996
#4
vitor #:
Post::findOrFail($id);

Спасибо, то что нужно!

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий