Не получить пользователя по запросу на обновление - PullRequest
0 голосов
/ 05 ноября 2018

Я хочу обновить столбец из моей таблицы пользователей. Я связал кнопку с запросом PUT, но я не получаю пользователя из своего запроса, что мне здесь не хватает?

Код

Маршрут:

Route::resource('/admin', 'AdminController')->only(['index','update','destroy'])->middleware('is_admin');  

Контроллер:

public function update(Request $request, User $user)
{
    $requestData = $request->all();
    dd($requestData, $user, $user->id);
    // return redirect('/admin');
}

Вид:

{!! Form::open(['action' => ['AdminController@update', $user->id],'method' => 'POST', 'class'=> 'float-right']) !!}
{{Form::hidden('_method','PUT')}}
{{Form::button('Remove points', ['type' =>'submit', 'class' => 'submit-btn'])}}
{!! Form::close() !!}

DD вывод:

array:2 [▼
  "_token" => "5AOzOmyktXUiuW5OJNQbVOuDuFtEWgkH1h1Zocgo"
  "_method" => "PUT"
]
User {#242 ▼
  #fillable: array:6 [▶]
  #hidden: array:2 [▶]
  #connection: null
  #table: null
  #primaryKey: "id"
  #keyType: "int"
  +incrementing: true
  #with: []
  #withCount: []
  #perPage: 15
  +exists: false
  +wasRecentlyCreated: false
  #attributes: []
  #original: []
  #changes: []
  #casts: []
  #dates: []
  #dateFormat: null
  #appends: []
  #dispatchesEvents: []
  #observables: []
  #relations: []
  #touches: []
  +timestamps: true
  #visible: []
  #guarded: array:1 [▶]
  #rememberTokenName: "remember_token"
}
null

1 Ответ

0 голосов
/ 06 ноября 2018

TL; DR;

Переименуйте свой атрибут $user в $admin.

Explaination

Laravel добавит некоторую модель, только когда вы определите Привязка модели маршрута шаблон:

Ваш маршрут должен принимать параметр с тем же именем атрибута, который вы пытаетесь внедрить, например:

PATCH admin\{user}

И метод вашего контроллера должен иметь атрибут с таким же именем:

public function update(User $user) { /** **/ }

Поскольку вы определяете свой маршрут с помощью метода Route::resource('admin', ...), laravel автоматически назовет этот параметр с тем же именем ресурса, поэтому ваш маршрут будет выглядеть так:

PATCH admin\{admin}

Вот почему Laravel не может внедрить модель должным образом, поэтому он внедряет просто пустую модель (поведение внедрения зависимостей по умолчанию - создание экземпляра класса и его внедрение).

Таким образом, атрибут вашего метода должен называться $admin:

public function update(Request $request, User $admin) { /** **/ }

Таким образом, Laravel может видеть, что этот параметр должен быть заполнен моделью, загруженной с идентификатором, указанным в URL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...