2017-03-02 6 views
3

自分が文書に詰まっているか紛失しています。Laravel 5.4要求とパラメータを使用した経路

私はリクエストオブジェクトを必要とするコントローラに検証を作成しようとしていますLaravel 5.4を使用しています。

私の問題は私のルートがパラメータを渡しているので、コントローラメソッドにRequest $request引数と$idパラメータをどのように含めるかをドキュメントで見つけることができません。ここ

は私の例である:

1:SomeController.php

<?php 
namespace App\Http\Controllers; 
use Illuminate\Http\Request; 
... 
public function edit($id) { 
    $request = Request; // <-- Do I use that instead of passing an arg? 
} 

2:でPARAMTERとルート - ルート/ web.php

Route::match(['GET', 'POST'], '/some/edit/{id}', '[email protected]'); 

例では、https://laravel.com/docs/5.4/requests#accessing-the-requestは、Request $requestコントローラーでこれはですが、Routeパラメーターはどうなりますか?

public function store(Request $request) {} 

質問:私はルートを編集する必要があるか、その要求を無視最初のパラメータがありますか?


A:または私は** SomeController.phpでこれを行うだろう**

public function edit(Request $request, $id) 
{ 
    // I would get the $request, but what happens to $id? 
    $this->validate($request, [ 
     'title' => 'required|unique:posts|max:255', 
    ]); 
} 

B:?おそらく、このようなものは

public function edit($id) 
{ 
    // Or Request::getInstance()? 
    $this->validate(Request, [ 
     'title' => 'required|unique:posts|max:255', 
    ]); 
} 
を?:

アドバイスがあれば助かります。

答えて

12

public function edit(Request $request, $id) 

を行うと、あなたが既に持っているルートと一致する必要があります。だからそれをするのは大丈夫です。ここではRequest $requestは必須パラメータではありません。ララヴェルはそれを世話します。

あなたがリクエストを送信するたびに、Laravelがあなたにリクエストを送信します(GET、POST)ので、この方法で動作します。だから、それは常に存在します。しかし、コントローラー関数にパラメーターとして渡さないと、コントローラー内で使用することができます。

ただし、関数ヘルパー関数request()を使用してアクセスすることはできますが、関数パラメータとして渡すことはできません。

$request = request(); 
$name = $request->name; // or 
$name = request('name'); 
+0

ありがとうございました!時間が過ぎればそれをマークしてください! :) – JREAM

+3

私は追加し、その型が引数でいい(良い)練習。 – fubar

+0

グレートアドバイス示唆したとして、 '$のrequest'が渡された依存性の注入を(使用して@Rob – JREAM

関連する問題