2016-10-07 13 views
0

が発生しました。間違ったURL(http://example.com/articles/qslkdqm;ワイルドカードを使用したSilexルーティングでは、エラー500

コントローラ

$article = $app['dao.article']->getArticle($slug); 
if (!$article) { 
    $response = new Response(); 
    $response->setStatusCode(404); 
} 

:コントローラは、エラー500の代わりに、だから、私は、コントローラは、スラグをチェックするときに手動でデータを取得するためのStatusCodeを変更しようとした404

エラーをスローしかし、それは動作しませんし、まだエラー500をスローします。

それは正常ですか?これは404になるはずです。

いくつかの変数が定義されていないため(つまり、記事のタイトル)、エラー500が表示されることがあります。これは、各変数呼び出しで、その存在が次のようになっているかどうかを確認するだけです:

{% if title is defined %} 
... 
{% endif %} 

ありがとうございました。

+1

彼らはイエスその後、定義されていないかもしれないという危険性がある場合。また、実際の値を持たずにビューを表示する場合は、デフォルト値を送信することもできます。あなたはすでに404の代わりに500のエラーが出る理由は既に知っているようです(php-error(500)があれば、phpでhttpコードを上書きすることはできません。コードを解析してください) –

+1

これは500に関連するエラーですか?どのメッセージが見えますか? (画面、ログ、...) – Matteo

+0

あなたの助けてくれてありがとう@MagnusErikssonしかし、以下の答えは、デフォルト値を宣言することなくそれを解決しました。 – cyclone200

答えて

1

あなたは404エラーで、このようにアプリケーションを停止することができます:

​​

または

if (!$article) { 
    throw new \Symfony\Component\HttpKernel\Exception\HttpException(404); 
} 
+0

実際、完全に動作します。ご協力ありがとうございました! – cyclone200

関連する問題