Laravel向控制器传递额外参数

3

我需要通过点击按钮从我的index.blade.php传递一个额外的参数($uid)到我的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);
}

使用上述代码时,我遇到了一个错误:"缺少参数2,用于App\Http\Controllers\FlyersController::edit()"。请问我做错了什么?

为什么不链接一个路由呢? - Sanzeeb Aryal
4个回答

2
错误并不是从动作方法中抛出的,而是来自于该URL的路由。
检查传递给控制器的参数的URL。
如果这是您想要的URL localhost:8000/backend/flyers/10/edit?%24uid=1,那么第二个参数在$request变量中而不是控制器函数参数中。

这是我的路由 Route::resource('backend/flyers', 'FlyersController'); - Mamulasa
1
你正在使用资源路由,第二个参数在查询字符串中,因此从Request变量中检索,如$request->uid,请确保在控制器动作中添加Request变量。 - vinod rajput

1

您应该将数组传递到action()助手函数中:

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

我也尝试过这个。结果是一样的。顺带一提,这是我点击按钮“http://localhost:8000/backend/flyers/10/edit?%24uid=1”后被重定向到的网址。uid已传递,但FlyersController仍然有问题。 - Mamulasa
同时,使用<a href="{!!action('FlyersController@edit', ['id' => Auth::user()->id, '$uid' => 1])!!}" type="button" class="btn btn-block btn-lg btn-info vorlageBtn card-link">时,我仍然会遇到缺少第二个参数的错误。 - Mamulasa
这对我不起作用。Laravel 5.8 - MrMoxy

1

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

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

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

在我的视图中,使用{{request->uid}}访问uid。如果有更好的解决方案,请告诉我。


不确定为什么您需要更好的解决方案。这是一个非常好的方法来完成它。 - Moshe Katz

-1
请使用这段代码。
return view('backend.flyers.edit', ['var1' => $var1, 'var2' => $var2]);

这将向您的视图传递两个或更多变量


3
OP想将参数传递给控制器,而不是视图。 - Alexey Mezenin
相同的结果。控制器仍然不知道该参数。 - Mamulasa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接