2013-07-05 16 views
5

Laravel 4 ile çalışıyorum, postaları gösteren bir sayfam var. example.com/posts/1, db'den ilk gönderiyi gösterir.Laravel 4: post yayınlanmıyorsa sayfayı yönlendirmek için denetleyiciyi kullanıyor - denedim ama şu ana kadar başarısız oldum

Yapmak istediğim, bir kullanıcı var olmayan bir URL'ye gitmeye çalışırsa, sayfayı dizine yeniden yönlendirmektir.

örn. 6 numaralı bir posta numarası yoksa, example.com/posts/6 adresine yeniden yönlendirilmelidir: example.com/posts

İşte sahip olduğum şey, yolda ne var?

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'); 
     } 
} 

Herhangi bir fikir?

cevap

10

Tam Rob açıklandığı gibi, aşağıdakileri yapmanız gerekir

şovunuzun ($ id) yöntemi dahilinde Sonra
use Illuminate\Database\Eloquent\ModelNotFoundException; 

:

try 
{ 
    $post = $this->post->findOrFail($id); 

    return View::make('posts.show', compact('post')); 
} 
catch(ModelNotFoundException $e) 
{ 
    return Redirect::route('posts.index'); 
} 
+0

Teşekkürler Marc ve @Rob Gordijn çalışıyor, ancak "Illuminate \ Database \ Eloquent \ ModelNotFoundException; Illuminate \ Database \ Eloquent \ ModelNotFoundException kullanımını dahil etmek için daha iyi bir yer olup olmadığını biliyor musunuz; ? Kontrolörün tepesinden başka? – Josh

1

findOrFail() yöntemi, sayfa bulunamazsa bir Özel Durum atar. Dolayısıyla, etrafınıza bir try { ... } catch() { ... } yüklerseniz, bir yönlendirmenin görünümünü döndürebilirsiniz. senin dosyasının en üstünde

:

İlgili konular