2017-02-18 6 views
3

테이블 UsersLaravel에서 패치 요청을 사용하는 방법?

이 테이블의 일부 필드는 기본적으로 null 인에 stoted되는 개체 User 있습니다.

이 필드를 업데이트하고 null 데이터를 설정해야합니다. 내가 Laravel에 PATCH 방법을 사용하려고이를 위해

:

라우팅 :

Route::patch('users/update', '[email protected]'); 

컨트롤러 :

public function update(Request $request, $id) 
    { 
     $validator = Validator::make($request->all(), [ 
      "name" => 'required|string|min:3|max:50', 
      "email_work" => 'email|max:255|unique:users', 
      "surname" => 'required|string|min:3|max:50', 
      "tel" => 'required|numeric|size:11', 
      "country" => 'required|integer', 
      "region" => 'required|integer', 
      "city" => 'required|integer' 
     ]); 

     if ($validator->fails()) { 
      return response()->json(["message" => $validator->errors()->all()], 400); 
     } 

     $user = User::where("user_id", $id)->update([ 
      "name" => $request->name, 
      "surname" => $request->surname, 
      "tel" => $request->tel, 
      "country" => $request->country, 
      "city" => $request->city, 
      "region" => $request->region, 
      "email_work" => $request->email 
     ]); 

     return response()->json(["user" => $user]); 

    } 

은 내가 데이터를 전달할 수 있다는 뜻 업데이트 하시겠습니까? $id 매개 변수를 라우팅 및 컨트롤러에 상대적으로 전달해야합니까?

Laravel의 PATCH 메소드에서 오른쪽 핸들러를 사용하는 방법은 무엇입니까?

+0

당신은'PHP는 장인 경로를 실행할 수 있을까요? –

+0

update() 함수에 $ id 매개 변수가 있다면'Route :: patch ('users/{id}/update', 'UsersController @ update'와 같이 경로를'{id} ');' –

답변

6

경로는 다음과 같습니다

Route::patch('users/update', '[email protected]'); 

하는 모든 CRUD의 opration에 사용하는 다음과 같은 경로로 경로를 바꾸

Route::resource('users', 'UsersController'); 

당신이 사용하는 경우 아약스 제출 데이터에 대한 다음 귀하의 유형과 URL을 바꿉니다 :

type: "patch", 
url: "{{url('/')}}users/" + id, 

당신은 다음과 같은 사용보다 아약스를 사용 해달라고하면 : list`를하고 당신이 등록이 특정 경로에 대해 알려줍니다 무엇을 우리에게 보여

<form method="POST" action="{{url('/')}}users/".$id> 
    {{csrf_field()}} 
    {{ method_field('PATCH') }} 
</form> 
0

업데이트

Route::patch('/users/update/{id}',[ 
    'uses' => '[email protected]' 
]); 
+0

제 경우에는 Auth 객체의 컨트롤러에서'id'를 얻습니다 – Darama

1

아래에 따라 라우팅 예,이 노선 패치 ID를 보내야합니다. 예 : https://laravel.com/docs/5.4/controllers#resource-controllers Laravel의 경우

PUT/PATCH -/photos/{photo}이므로 경로에 update 단어가 필요하지 않습니다. 사용자/ID 및 메소드 PUT 또는 PATCH. CRUD 작업을위한

UPD :

// Routes 
Route::resource('items', 'ItemsController'); 

// Form for update item with id=1 
<form method="POST" action="{{ route('items.update', ['id' => 1])}}"> 
    {!! csrf_field() !!} 
    <input name="_method" type="hidden" value="PATCH"> 
    <!-- Your fields here --> 
</form> 

// Controller 
public function update($id, Request $request) 
{ 
    // Validation here 

    $item = Item::findOrFail($id); 

    // Update here 
} 
+0

실제 샘플을 공유 할 수 있습니까? – Darama

+0

고맙습니다. 폼 액션을 업데이트하기 위해 여러 매개 변수를 설정하는 데 도움이됩니다. – rufatZZ