Laravel - 将变量从函数传递给另一个函数

时间:2014-02-19 13:45:12

标签: php laravel

这是将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()

2 个答案:

答案 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