Lumen:如何从路由向控制器传递参数
Posted
技术标签:
【中文标题】Lumen:如何从路由向控制器传递参数【英文标题】:Lumen: how to pass parameters to controller from route 【发布时间】:2015-09-25 18:44:38 【问题描述】:从我的路线我需要将 $page 的值传递给控制器
路线:
$app->get('/show/page', function($page) use ($app)
$controller = $app->make('App\Http\Controllers\PageController');
return $controller->index();
);
控制器:
public static function index()
/** how can I get the value of $page form here so i can pass it to the view **/
return view('index')->with('page', $page);
【问题讨论】:
将其作为参数传递给控制器方法index($page)
我已经做到了!但感谢这一点,我已经弄清楚了这个错误的真正问题Declaration of App\Http\Controllers\PageController::index() should be compatible with App\Http\Controllers\Controller::index()
【参考方案1】:
您可以将它作为索引函数的参数传递。
路线
$app->get('/show/page', function($page) use ($app)
$controller = $app->make('App\Http\Controllers\PageController');
return $controller->index( $page );
);
虽然我觉得这条路线不对,但通常你定义的路线开头没有正斜杠:$app->get('show/page', ...
。
控制器
public static function index($page)
return view('index')->with('page', $page);
除非有使用闭包的原因,您的路由可以重写如下,$page
变量将自动作为参数传递给控制器方法:
路线
$app->get('show/page', [
'uses' => 'App\Http\Controllers\PageController@index'
]);
【讨论】:
【参考方案2】:在我的情况下,显示指定用户,情况几乎相同
路由文件 (web.php)
Route::get('user/id/show', ['as'=> 'show', 'uses'=>'UserController@show']);
我还在用门面
查看文件 (users.blade.php)
href="route('show', ['id' => $user->id])"
只是将数组传递给路由名称 最后一个在
控制器文件(UserController.php)
public function show($id)
$user = User::findorfail($id)->first();
return view('user', compact('user'));
完成了
【讨论】:
以上是关于Lumen:如何从路由向控制器传递参数的主要内容,如果未能解决你的问题,请参考以下文章