这是将id从函数传递到另一个函数的正确方法吗?
return Redirect::to('uploads/show', $id);
或者我应该使用
return Redirect::to('uploads/show')->with($id);
我试图将id传递给
的函数public function getShow($id)
{
$entryid = $this->upload->findOrFail($id);
$this->layout->content = View::make('uploads.show', compact('entryid'));
}
我得到的错误是
Missing argument 1 for UploadsController::getShow()
答案 0 :(得分:4)
使用Redirect
时,您应该这样做:
return Redirect::to('uploads/show/'.$id);
通过路由器
将变量传递给控制器答案 1 :(得分:2)
如果您想尽可能正确地进行操作,则需要正确制作网址。之前使用字符串连接的答案不是错误,但更好的方法可能是:
return Redirect::to(URL::to('uploads/show', [$id]));
你会发现,当你获得更多路由时,特别是第一次你决定重做路由约定时,使用命名路由(或至少基于控制器的路由Route::controller
)可能会为你服务更好。在这种情况下,情况类似:
// routes.php
Route::get('uploads/show/{id}', ['as' => showUpload', 'uses' => 'Controller@action']);
// redirect:
return Redirect::route('showUpload', [$id]);
还要注意如何直接在这里传递参数(而不是使用URL::to()
),因为使用命名路由不是像上面那样的简单字符串路径。
同样,如果您使用基于控制器的路由:
// routes.php
Route::Controller('uploads', 'Controller'); // I don't use this, syntax is like this
// redirect:
return Redirect::action('Controller@getShow', [$id]); // again I don't use this, but it's similar