URL
- 現在の URL へのアクセス
- 名前付きルートURL
- 署名付き URL
- コントローラ アクションの URL
- デフォルトvalue
- はじめに Laravel は、アプリケーションの URL を生成するためのいくつかのヘルパー関数を提供します。主に、テンプレートおよび API 応答で URL を構築したり、アプリケーションの他の部分でリダイレクト応答を生成したりするために使用されます。
補助関数url
は、アプリケーション内の任意の URL に使用できます。生成された URL は、現在のリクエストのスキーム ( HTTP または HTTPS ) とホストを自動的に使用します:$post = App\Post::find(1); echo url("/posts/{$post->id}"); // http://example.com/posts/1
現在の URL にアクセスします
ヘルパー関数 url
にパスが指定されていない場合は、Illuminate\Routing\UrlGenerator
インスタンスが返されて、次のことが可能になります。現在の URL に関する情報にアクセスします URL 情報:
// Get the current URL without the query string... echo url()->current(); // Get the current URL including the query string... echo url()->full(); // Get the full URL for the previous request... echo url()->previous();
上記のメソッドは、URL
ファサードを通じてアクセスできます:
use Illuminate\Support\Facades\URL; echo URL::current();##名前付きルートの URL補助関数
route を使用して、指定されたルートの URL を生成できます。名前付きルートによって生成された URL は、ルート上で定義された URL に結合されません。したがって、ルートの URL に変更があった場合でも、
route 関数呼び出しを変更する必要はありません。たとえば、アプリケーションに次のルートが含まれているとします。
Route::get('/post/{post}', function () { // })->name('post.show');このルートの URL を生成するには、次のようにヘルパー関数
route を使用できます。通常は、Eloquent モデルの主キーを使用して URL を生成します。したがって、Eloquent モデルをパラメーター値として渡すことができます。
route
echo route('post.show', ['post' => 1]); // http://example.com/post/1
ヘルパー関数
route 複数のパラメーターを持つルートの URL を生成するために使用することもできます: echo route('post.show', ['post' => $post]);
署名付き URLLaravel を使用すると、名前付きパスの「署名付き」URL を簡単に作成できます。これらの URL にはクエリ文字列に「署名付き」ハッシュが追加されており、Laravel は URL が作成されてから変更されていないことを確認できます。署名付き URL は、公的にアクセス可能だが URL 操作に対する保護層が必要なルートに特に役立ちます。 たとえば、署名付き URL を使用して、顧客に電子メールで送信される公開「購読解除」リンクを実装できます。パスを指す署名付き URL を作成するには、ファサードの signedRoute
メソッドURL:
Route::get('/post/{post}/comment/{comment}', function () { // })->name('comment.show'); echo route('comment.show', ['post' => 1, 'comment' => 3]); // http://example.com/post/1/comment/3
を使用します。期限切れの一時的な署名付きルート URL を生成したい場合は、次のようにすることができます。次の
temporarySignedRoute メソッドを使用します: use Illuminate\Support\Facades\URL;return URL::signedRoute('unsubscribe', ['user' => 1]);
Validate Signed Route Request受信リクエストに有効な署名があることを確認するには、 # を呼び出す必要があります。 ##hasValidSignature受信メソッド
Request:
あるいは、use Illuminate\Support\Facades\URL;return URL::temporarySignedRoute(
'unsubscribe', now()->addMinutes(30), ['user' => 1]
);
Illuminate\Routing\Middleware\ValidateSignature
ミドルウェアをルートに割り当てることもできます。存在しない場合は、このミドルウェアに HTTP カーネルの
配列内のキーを割り当てる必要があります。
カーネルにミドルウェアを登録した後、ルートミドルウェアにアタッチできます。受信リクエストに有効な署名がない場合、ミドルウェアは自動的に use Illuminate\Http\Request;
Route::get('/unsubscribe/{user}', function (Request $request) {
if (! $request->hasValidSignature()) {
abort(401);
}
// ...
})->name('unsubscribe');
403
エラー応答を返します:
/** * 应用程序的路由中间件 * * 这些中间件可能被分配给组或单独使用 * * @var array */ protected $routeMiddleware = [ 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, ];