Laravel: CRUD route имеет пустой параметр

Laravel: CRUD route имеет пустой параметр

13.01.2017 11:26:55 Просмотров 25 Источник

У меня возникли проблемы с маршрутом круд. На мой способ изменить в моей UserGroupsController контроллера, параметр $группа пуста.

UserGroupsController

class UserGroupsController extends Controller
{
    public function edit(UserGroup $userGroup)
      {        
        if (Auth::check())
        {
          $users = User::pluck('name','id')->all();
          $groups = Group::pluck('name','id')->all();
          return view('users-group.edit', compact('userGroup','users','groups'));
        }else{
          return redirect('login');
        }

    }
}

редактировать.лезвие.РНР

<div class="panel panel-default">
 <div class="panel-heading">Edit</div>
     <div class="panel-body">
          {{ $userGroup }}
          {!! Form::model($userGroup,['method' => 'PATCH', 'route' => ['users-group.update', $userGroup->id], 'id' => 'user_group-form', 'class' => 'form-horizontal'] ) !!}
          {{ csrf_field() }}

          <input type='hidden' name='id' value='{!! $userGroup->id !!}'>
          @include('users-group.form',array('submitButton' => 'Edit User Group'))              
       {!! Form::close()  !!}
</div>

форма.лезвие.РНР

<div class="form-group">
  <label for="user_id" class="col-md-4 control-label">User</label>
  <div class="col-md-6">
    {!! form::select('user_id', $users, $userGroup->user_id,['class' => 'form-control']) !!}
  </div>
</div>
<div class="form-group">
  <label for="group_id" class="col-md-4 control-label">Group</label>
  <div class="col-md-6">
    {!! form::select('group_id', $groups, $userGroup->group_id,['class' => 'form-control']) !!}
  </div>
</div>
<div class="form-group">
    <div class="col-md-6 col-md-offset-4">
        {!! Form::submit($submitButton) !!}
    </div>
</div>

Маршруты:

Route::group(['middleware'=>['web']], function ()
{
  Route::resource('users','UsersController');
  Route::resource('users-group','UserGroupsController');
  Route::resource('companies','CompaniesController');
});

php artisan route: список :

|        | POST      | users-group                    | users-group.store   | App\Http\Controllers\UserGroupsController@store                        | web          |
|        | GET|HEAD  | users-group/create             | users-group.create  | App\Http\Controllers\UserGroupsController@create                       | web          |
|        | PUT|PATCH | users-group/{users_group}      | users-group.update  | App\Http\Controllers\UserGroupsController@update                       | web          |
|        | DELETE    | users-group/{users_group}      | users-group.destroy | App\Http\Controllers\UserGroupsController@destroy                      | web          |
|        | GET|HEAD  | users-group/{users_group}      | users-group.show    | App\Http\Controllers\UserGroupsController@show                         | web          |
|        | GET|HEAD  | users-group/{users_group}/edit | users-group.edit    | App\Http\Controllers\UserGroupsController@edit

dd($userGroup):

UserGroup {#199 ▼
  #fillable: array:2 [▼
    0 => "user_id"
    1 => "group_id"
  ]
  #connection: null
  #table: null
  #primaryKey: "id"
  #keyType: "int"
  #perPage: 15
  +incrementing: true
  +timestamps: true
  #attributes: []
  #original: []
  #relations: []
  #hidden: []
  #visible: []
  #appends: []
  #guarded: array:1 [▶]
  #dates: []
  #dateFormat: null
  #casts: []
  #touches: []
  #observables: []
  #with: []
  +exists: false
  +wasRecentlyCreated: false
}

В файле правка.лезвие.php, я печатаю переменную $userGroup, но возвращает " [ ]". И у меня есть такой же код для UsersControllers, но там работает.

Когда я отправлял форму, я получил эту ошибку:

MethodNotAllowedHttpException in RouteCollection.php

Извините за английский, я надеюсь, что вы понимаете мою проблему, и я могу дать больше информации. спасибо

У вопроса есть решение - Посмотреть?

https://stackoverflow.com/questions/41642928/laravel-crud-route-has-a-empty-parameter#comment70485824_41642928
Привет, я обновил пост, я поставил dd ($userGroup);. Переменная пуста :(
https://stackoverflow.com/questions/41642928/laravel-crud-route-has-a-empty-parameter#comment70485851_41642928
Какой url вы пытаетесь найти?

Ответы - Laravel: CRUD route имеет пустой параметр / Laravel: CRUD route has a empty parameter

Является ответом!
Daan Meijer

13.01.2017 11:31:30

В edit метода, как правило, присваивается идентификатор. Чтобы устранить проблему, удалите тип из заголовка и получите модель в своем методе:

class UserGroupsController extends Controller
{
    public function edit($id)
      {        
        $userGroup = UserGroup::findOrFail($id);
        if (Auth::check())
        {
          $users = User::pluck('name','id')->all();
          $groups = Group::pluck('name','id')->all();
          return view('users-group.edit', compact('userGroup','users','groups'));
        }else{
          return redirect('login');
        }

    }
}
Mojtaba

13.01.2017 11:33:22

Вы не можете передать объект через http. вы можете сделать либо одно из этих действий:

1-Получить идентификатор в качестве входного сигнала и найти запись (как сказал @Daan Meijer).

2-Использовать Привязку Модели Маршрута (Рекомендуется): Привязка Модели Маршрута

https://stackoverflow.com/questions/41642928/laravel-crud-route-has-a-empty-parameter/41643005#comment70485896_41643005
@DaanMeijer. Да. Тебе понравится.
chinedu chaz

26.01.2020 10:44:06

Изменив имя переменной $userGroup на $usergroup (обратите внимание на строчную букву "G", соответствующую названию маршрута ресурса), ресурс вернет данные из базы данных.

В laravel передаваемая переменная маршрута должна соответствовать модели или полученному ресурсу контроллера

Закрыть X