【问题标题】:Laravel Passing Additional Parameter To ControllerLaravel 将附加参数传递给控制器
【发布时间】:2016-09-27 12:20:28
【问题描述】:

我需要通过单击按钮将附加参数 ($uid) 从我的 index.blade.php 传递到我的 edit.blade.php。

我的 index.blade.php:

<a href="{!!action('FlyersController@edit', ['id' => Auth::user()->id, 'uid' => 1])!!}" type="button" class="btn btn-block btn-lg btn-info vorlageBtn card-link">Edit </a>

我的 FlyersController:

public function edit($id, $uid)
{

    return view('backend.flyers.edit')->withUid($uid);
}

使用上面的代码,我得到一个错误:“App\Http\Controllers\FlyersController::edit() 缺少参数 2”

我在这里做错了什么?

【问题讨论】:

  • 你为什么不链接路线呢?

标签: php laravel


【解决方案1】:

错误不是从操作方法中抛出的。它来自该 URL 的路由。

检查 URL 以将参数传递给控制器​​。

如果这是您想要的 URL localhost:8000/backend/flyers/10/edit?%24uid=1,那么第二个参数在 $request 变量中,而不是在控制器函数参数中。

【讨论】:

  • 这是我的路线 Route::resource('backend/flyers', 'FlyersController');
  • 您正在使用资源路由,第二个参数在查询字符串中,因此它是从请求变量中检索的,如 $request->uid 确保在控制器操作中添加请求变量
【解决方案2】:

你应该将一个数组传递给action() helper:

action('FlyersController@edit', ['id' => Auth::user()->id, 'uid' => 1])

【讨论】:

【解决方案3】:

好的, 我可以解决这个问题的唯一方法是在 My FlyersController 中使用以下内容:

public function edit(Request $request, $id)
{

    return view('backend.flyers.edit')->withRequest($request);
}

然后在我的视图中使用 {{request->uid}} 访问 uid。

如果有人对此有更好的解决方案,请告诉我。

【讨论】:

  • 不确定为什么需要更好的解决方案。这是一个非常好的方法。
【解决方案4】:

使用此代码

return view('backend.flyers.edit', ['var1' => $var1, 'var2' => $var2]);

这会将两个或多个变量传递给您的视图

【讨论】:

  • OP 想要将参数传递给控制器​​,而不是视图。
  • 同样的结果。控制器仍然不知道参数
猜你喜欢
  • 1970-01-01
  • 2016-04-26
  • 2020-11-30
  • 2016-05-16
  • 2017-01-12
  • 1970-01-01
  • 1970-01-01
  • 2018-07-14
相关资源
最近更新 更多