web-dev-qa-db-ja.com

App :: abort(404)Laravel 5?

Laravel 4で、私は単に呼び出すことができた

App::abort(404)

Laravel 5に同等のものはありますか?

これについては、執筆時点で驚くほど限られた情報しかありません。 catch NotFoundHttpExceptionsの方法についての議論を見つけましたが、url構造は既にroutes.phpファイル。もう少し背景を説明するために、私がやろうとしていることの単純化されたバージョンを以下に示します。

Routes.php:

Route::get('/info/{page}', array('as' => 'info', 'uses' => 'Primary@infoPage'));

Primary.php(コントローラー)

public function infoPage($page){
    $pageData = DB::table('pages')->where('url_title', $page)->first();
    if(!empty($pageData)){
       // great, there's a corresponding row in the database for this page, go ahead and do stuff...
    }else {
       // This page doesn't exist, please abort with a 404 error... but how?
    }
}
15
Inigo

Official documentation を見るだけです。

HTTP例外

一部の例外は、サーバーからのHTTPエラーコードについて説明しています。たとえば、これは「ページが見つかりません」エラー(404)、「不正なエラー」(401)、または開発者が500エラーを生成した場合もあります。このような応答を返すには、次を使用します。

abort(404);

オプションで、応答を提供できます。

abort(403, 'Unauthorized action.');

このメソッドは、リクエストのライフサイクル中いつでも使用できます。

カスタム404エラーページ

すべての404エラーのカスタムビューを返すには、resources/views/errors/404.blade.phpファイルを作成します。このビューは、アプリケーションで生成されたすべての404エラーで提供されます。

更新

この関数は削除され、すぐに here のように置き換えられるようです。 「回避策」は、404応答を作成することです。

カスタムレスポンスの作成

ほとんどのルートとコントローラーアクションでは、完全なIlluminate\Http\Responseインスタンスまたはビューを返します。完全なResponseインスタンスを返すことで、応答のHTTPステータスコードとヘッダーをカスタマイズできます。 ResponseインスタンスはSymfony\Component\HttpFoundation\Responseクラスを継承し、HTTP応答を構築するためのさまざまなメソッドを提供します。

use Illuminate\Http\Response;

return (new Response($content, $status))
    ->header('Content-Type', $value);

便宜上、応答ヘルパーも使用できます。

return response($content, $status)
    ->header('Content-Type', $value);

:利用可能な応答メソッドの完全なリストについては、その APIドキュメント および Symfony APIドキュメント

30
IlGala