2017-02-18 7 views
3

はテーブルUsersLaravelでのパッチリクエストの使用方法?

この表の一部のフィールドは、デフォルトではNULLであるにstotedされたエンティティUserがあります。

これらのフィールドを更新し、ヌルデータを設定する必要があります。私は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::resource('users', 'UsersController'); 

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

は、すべてのCRUDのoprationに使用する次のルートを使ってルートを置き換えますデータを送信するためのajaxは、あなたのタイプとurlを次のように置き換えます:

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

次の使用よりも、AJAXを使用していけない場合: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を送信する必要があります。 Laravelのhttps://laravel.com/docs/5.4/controllers#resource-controllersの例

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

関連する問題