缺少App \ Http \ Controllers \ UserController :: edit()bug的参数3?

时间:2016-10-24 22:30:10

标签: laravel-5.2 php-7

所以我有这条宁静的路线public function edit(Request $request, customer_user $user, $id)

我已经改变了编辑控制器方法,如下所示:

Missing argument 3 for App\Http\Controllers\UserController::edit()

有了这个,我得到customer_user

$id = null是一个模型。

但如果我在控制器方法中添加dd($id),我会得到所需的结果

但是,如果我这样做了

http://x/3/edit,网址为dd($user->take(1)->first()),表示" null"并没有给我这个号码。

但是我的模型r=10^8 c=5 A=matrix(runif(r*c,0,1),r,c) B=matrix(runif(r*c,0,1),r,c) 在网址中显示了正确的模型!?

我对此感到困惑,无法找到有类似问题的人。

提前致谢

1 个答案:

答案 0 :(得分:1)

你这里不需要$ id

public function edit(Request $request, customer_user $user,  $id)

为什么? - 当你使用Route::resource('user', 'UserController'); laravel创建路由时,其中一个是/user/{user}/edit和GET方法,这里是一个占位符。默认情况下,当您创建资源控制器时,编辑方法就像这样public function edit($id),并且$ id的值是从传递为{user}的任何内容中设置的

但是在您的编辑方法edit(Request $request, customer_user $user, $id)

  

- *调用方法时,除非参数保持默认值

,否则必须给出所有参数      

- 当您的网址为http://x/3/edit时,laravel会将请求作为第一个参数值传递

     
      
  • 然后它找到customer_user模型,但它的值为3,因此它使用customer_user::find(3)
  • 设置第二个参数的值   
     

- 然后$ id param和laravel没有任何要分配的内容,所以错误来了,但是当你设置$id=null这是默认值,这样你就不会收到任何错误

     
      
  • 现在让我们以edit方式修改您的public function edit(Request $request, Category $user, $id)方法,假设您拥有Category模型,现在访问相同的网址并检查dd($user->take(1)->first())您会找到类别信息而不是customer_user!
  •