【问题标题】:Lumen: how to pass parameters to controller from routeLumen:如何从路由向控制器传递参数
【发布时间】: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()

标签: laravel lumen


【解决方案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'));
        }
    

    完成了

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-28
      • 2019-07-10
      • 1970-01-01
      相关资源
      最近更新 更多