2017-03-02 7 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 : 있었던 파라미터와 경로에 - 노선/web.php

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

예 : https://laravel.com/docs/5.4/requests#accessing-the-request에서 그들은 Request $request 컨트롤러에서 이지만 경로 매개 변수는 어떻게됩니까? :

public function store(Request $request) {} 

질문 : 경로를 편집해야하거나 요청하는 경우 무시 첫 번째 매개 변수가 있습니까?


A는 : 아니면 내가이 짓을 했을까 ** SomeController.php **

B

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', 
    ]); 
} 
: 아마, 이런 일이

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이 처리 할 것입니다.

요청을 보낼 때마다 Laravel이 요청 (GET, POST)을 '보내기'때문에 이러한 방식으로 작동합니다. 그래서 항상 존재합니다. 컨트롤러 기능에 매개 변수로 전달하지 않으면 컨트롤러 내에서 사용할 수 있습니다.

그러나 함수 매개 변수로 전달하지 않으려면 request() 전역 도우미 함수를 통해 액세스 할 수 있습니다.

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

고맙습니다! 시간이 지나면 악을 표시하십시오! :) – JREAM

+3

의존성 삽입을 사용하여 추가 할 것입니다. ('$ request'가 힌트 형 인수로 전달되는 곳은 좋은 (더 좋은) 연습입니다.) – fubar

+0

큰 조언 @Rob – JREAM

관련 문제