Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 01.08.2015 13:00:24

Вернуть 404 в зависимости от рез. запроса, с параметром из маршрута

Добрый день!
Изучаю тут возможности маршрутизатора из 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();
    }

Какую проверку нужно поставить? Честно говоря думаю что я вообще не правильно маршруты с параметрами обозначаю, не подскажите как это лучше реализовать?

Не в сети

#2 01.08.2015 17:51:46

Re: Вернуть 404 в зависимости от рез. запроса, с параметром из маршрута

бросай Exception 404

Не в сети

#3 01.08.2015 18:45:10

Re: Вернуть 404 в зависимости от рез. запроса, с параметром из маршрута

4eIIIupKo пишет:

бросай 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

Не в сети

#4 02.08.2015 09:48:23

Re: Вернуть 404 в зависимости от рез. запроса, с параметром из маршрута

Надо замерить скорости) и как быстрей выполняеться и грузит меньше сервак тот и выбрать)

Не в сети

Подвал раздела