2012-12-31 10 views

Odpowiedz

69

można znaleźć rozwiązania w dokumentacji Symfony2:

http://symfony.com/doc/2.0/book/controller.html

zarządzania błędami i 404 stron

public function indexAction() 
{ 
    // retrieve the object from database 
    $product = ...; 
    if (!$product) { 
     throw $this->createNotFoundException('The product does not exist'); 
    } 

    return $this->render(...); 
} 

Jest krótka informacja w dokumentacji:

"Metoda createNotFoundException() tworzy specjalny NotFoundHttpException obiekt, który ostatecznie wyzwala 404 odpowiedź HTTP wewnątrz Symfony. "

use Symfony\Component\HttpKernel\Exception\NotFoundHttpException 

W moich skryptów Zrobiłem to tak:

use Symfony\Component\HttpKernel\Exception\NotFoundHttpException 

/** 
* @Route("/{urlSlug}", name="test_member") 
* @Template() 
*/ 
public function showAction($urlSlug) { 
    $test = $this->getDoctrine()->..... 

    if(!$test) { 
     throw new NotFoundHttpException('Sorry not existing!'); 
    } 

    return array(
     'test' => $test 
    ); 
} 
+6

+1 bo 'throw' a nie' return' wyjątek. Uratował mi trochę kłopotów. – ferdynator

+3

NIE! Nie zadziała z 'return', ponieważ nie jest to poprawny obiekt' Response'. rzuć go i żyj długo potem. – ferdynator