Laravel: отсутствуют обязательные параметры для [Route: objets.update]

#php #laravel #forms

#php #ларавель #формы #laravel

Вопрос:

У меня есть таблица объектов, я хочу создать форму только с одним полем, в котором пользователь вводит идентификатор объекта, и это позволяет им обновлять этот объект.

ошибка, которую я получаю, заключается в следующем:

 Missing required parameters for [Route: objets.update] [URI: objets/{objet}]. (View: D:Documentsfac18-19semestre4Projetfindlostresourcesviewsobjetsupdate.blade.php)
  

моя форма выглядит следующим образом : (в views/objets/update.blade.php )

 @extends('template_base')

@section('page')
<br>
<div class="container">
  <div id="to-send" class="row">
    <!--{{ Form::open(array('url' => '/objID/'))}}-->
    {{ Form::open(array('action' => "ObjetsController@update")) }}
    <div class="form-group">
      {{ Form::label('id','ID de l'objet :', ['class'=>'control-label']) }}
      {{ Form::text('id',null ,array('class' => 'form-control'))}}
    </div>
    <div class="form-group">
      {{ Form::submit('Envoyer', array('class' => 'btn btn-primary'))}}
    </div>
    {{ Form::close()}}
  </div>
</div>
<br>
@endsection
  

Мой метод обновления на данный момент пуст, я хотел также иметь возможность передавать идентификатор в качестве параметра, но у меня также есть ошибка с этим :

   public function update(Request $request) //I wanted an $id here
  {
    //return view("/profile");
  }
  

Итак, я ожидаю, что смогу обновить определенный объект с помощью этой формы, что я делаю не так?

(У меня есть следующие маршруты :

 Route::resource('objets', 'ObjetsController');
//Route::post('/objID/{id}', 'ObjetsController@update')->name('obj_id');
  

второе не помогло)

Комментарии:

1. Единственная проблема, которая бросается мне в глаза, — это то, что вы неправильно пишете object .

Ответ №1:

Для Route::resource('objets', 'ObjetsControlle r’);

маршрут обновления будет

objets/{objet} поэтому {{ Form::open(array('action' => "ObjetsController@update")) }} должно быть

 {{ Form::open(array('action' => "ObjetsController@update", $objet))) }}
  

Вы также можете предпочесть {{ Form::open(array('route' => 'objets.update', ['objet' => $objet]))) }}

и

 public function update(Request $request){}
  

должно быть public function update(Request $request, Objets $objet){}