Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 控制器中带有Laravel 6个参数的奇怪行为_Php_Laravel - Fatal编程技术网

Php 控制器中带有Laravel 6个参数的奇怪行为

Php 控制器中带有Laravel 6个参数的奇怪行为,php,laravel,Php,Laravel,我在创建Laravel 6控制器时发现了一个奇怪的行为 我有两条路线叫 Route::resource('role', 'RoleController')->middleware('verified'); Route::resource('category', 'MainCategoryController')->middleware('verified'); 两者都很好。 在这两个控制器中,我都有一个编辑方法 角色控制器 public function edit(Role $ro

我在创建Laravel 6控制器时发现了一个奇怪的行为

我有两条路线叫

Route::resource('role', 'RoleController')->middleware('verified');
Route::resource('category', 'MainCategoryController')->middleware('verified');
两者都很好。 在这两个控制器中,我都有一个编辑方法

角色控制器

public function edit(Role $role)
    {
        $permissions = Permission::get();
        $users = User::get();
        return view('roles.edit', compact('role', 'permissions', 'users'));
    }
public function edit($mainCategory)
    {
        $mainCategory = MainCategory::findOrFail($mainCategory);
        // dd($mainCategory);
        return view('categories.edit', compact('mainCategory'));
    }
主类别控制器

public function edit(Role $role)
    {
        $permissions = Permission::get();
        $users = User::get();
        return view('roles.edit', compact('role', 'permissions', 'users'));
    }
public function edit($mainCategory)
    {
        $mainCategory = MainCategory::findOrFail($mainCategory);
        // dd($mainCategory);
        return view('categories.edit', compact('mainCategory'));
    }
我的问题是,如果我使用in-MainCategoryController.edit as参数MainCategory$MainCategory它不会给我模型的数据,而是看起来像这样。在正常情况下,如果找不到模型,则路由到404

App\MainCategory {#471 ▼
  #guarded: []
  #connection: null
  #table: null
  #primaryKey: "id"
  #keyType: "int"
  +incrementing: true
  #with: []
  #withCount: []
  #perPage: 15
  +exists: false
  +wasRecentlyCreated: false
  #attributes: []
  #original: []
  #changes: []
  #casts: []
  #dates: array:1 [▶]
  #dateFormat: null
  #appends: []
  #dispatchesEvents: []
  #observables: []
  #relations: []
  #touches: []
  +timestamps: true
  #hidden: []
  #visible: []
  #fillable: []
  #forceDeleting: false
}
如果我像上面的函数那样要求模型数据,一切都很好。在RoleController.edit中,它工作正常,我得到了我要求的数据

我不知道为什么它是在角色中工作,而不是在主类别中


也许有人知道我在这里做错了什么,因为我无法找出我的错误。

您的变量名必须与路由中的参数名匹配。如果您执行
php artisan route:list
,您将看到以下内容:

| GET|HEAD  | category/{category}/edit | category.edit    | App\Http\Controllers\MainCategoryController@edit    | web        |
这意味着您的控制器需要具有如下签名:

公共功能编辑(主类别$category)
{
dd(类别);
}
如果变量名不匹配(如您的情况),它将创建一个新实例,原因是:

公共功能编辑(MainCategory$MainCategory)
{
dd($maincegory);//App\maincegory的新实例
}

您可以阅读有关隐式绑定的更多信息:

花一些时间来理解您的意思,但最终它帮助解决了我的问题。非常感谢你。