Я работаю с Laravel 4, у меня есть страница с сообщениями, например example.com/posts/1 показывает первое сообщение из db.
То, что я хочу сделать, это перенаправить страницу на индекс, если кто-то пытается перейти к URL-адресу, который не существует.
например, если не было почтового номера 6, то example.com/posts/6 следует перенаправить на example.com/posts
Вот что я имею, это вообще на пути?
public function show($id) { $post = $this->post->findOrFail($id); if($post != NULL) { return View::make('posts.show', compact('post')); } else { return Redirect::route('posts.index'); } }
Есть идеи? Благодаря 🙂
Именно так, как объяснил Робер, вам нужно будет сделать следующее:
В верхней части файла:
use Illuminate\Database\Eloquent\ModelNotFoundException;
Затем в вашем методе show ($ id):
try { $post = $this->post->findOrFail($id); return View::make('posts.show', compact('post')); } catch(ModelNotFoundException $e) { return Redirect::route('posts.index'); }
Метод findOrFail()
будет генерировать исключение, если страница не найдена. Поэтому, если вы завершите try { ... } catch() { ... }
вокруг него, вы можете вернуть представление о перенаправлении.