Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Добрый день!
Изучаю тут возможности маршрутизатора из Raravel5, и обратил внимание что не смотря на несуществующий id материала(по запросу post/265, например), выводится пустая страница, и соответственно 404ой ошибки нет.
маршрутизатор:
Route::controller('/', 'PostController');
Контроллер:
public function getIndex()
{
$posts = Post::getLatestPosts();
return view('blog.post', ['posts' => $posts]);
}
public function getPost($id){
$posts = Post::getPostById($id);
return view('blog.post', ['posts' => $posts]);
}
Модель:
public static function getLatestPosts(){
return self::latest('id')
->where('published', '=', '1')
->take(5)
->get();
}
public static function getPostById($id){
return self::latest('id')
->where('id', '=', $id)
->get();
}
Какую проверку нужно поставить? Честно говоря думаю что я вообще не правильно маршруты с параметрами обозначаю, не подскажите как это лучше реализовать?
Не в сети
бросай Exception 404
Не в сети
бросай Exception 404
Да вот в том то и вопрос, как его лучше выбросить. В итоге остановился на таком варианте:
public static function getPostById($id){
$result = self::latest('id')
->where('id', '=', $id)
->get();
if(!$result->isEmpty()){//Тут теперь проверка на "пустоту" результата запроса
return $result;
}else{
abort('404');//Если пусто, то прихлопнуть приложение с 404ой ошибкой.
}
}
Есть еще вариант использования Respons'ов. Подробнее: http://laravel.com/docs/5.0/responses
Не в сети
Надо замерить скорости) и как быстрей выполняеться и грузит меньше сервак тот и выбрать)
Не в сети