【问题标题】:Laravel: Get current params in routes.phpLaravel:在 routes.php 中获取当前参数
【发布时间】:2014-10-09 18:18:42
【问题描述】:

我在我的 Laravel 应用程序中使用了扩展 laravel-menu。 此应用程序包含多个项目,每个项目都有多个位置。

现在我想定义一个边菜单,我可以在其中管理位置。 一个项目的 url 是

project/1

一个项目的locations页面的url是

project/1/locations

如何在 routes.php 中设置这个侧边菜单?

我的 routes.php 代码:

Route::resource('project', 'ProjectsController'));
Route::resource('project.locations', 'LocationsController');

    Menu::make('sidemenu-project', function($menu) {
        $menu->add('Locaties', array('route' => 'project.locations.index','{project?}'))->data('id',1); // this is not working

    });

这是输出 url /project/%7Bproject%7D/locations

【问题讨论】:

    标签: php laravel navigation


    【解决方案1】:

    转到您的终端(命令提示符)并运行以下命令:

    > php artisan routes
    

    然后您将看到所有声明的路由及其URL 和相应的路由名称以及method name

    【讨论】:

    • 对不起,仔细检查它并没有帮助我。我认为它正在工作,但我也在控制器操作中添加了菜单脚本,从那里我检索了项目 ID。但是这个菜单会出现在多个页面上,我不想在每个控制器中添加相同的菜单。
    【解决方案2】:

    我对 Laravel 很陌生,但文档的 Routes 页面提到您创建了一个具有如下参数的控制器:

    Route::get('user/{id}', function($id) { ... });
    

    您能否因此将您的路线定义为

    Route::get('project/{id}/locations', function($id) { ... });
    

    【讨论】:

      【解决方案3】:

      我认为你有这个问题是由于路线配置错误。要实现您想要的路由结构,您应该将project/1/locations 路由定义置于第一个。考虑你的 routes.php 是:

       Route::resource('project/{project}/locations', ['as'=>'project.locations', 'uses'=> 'LocationsController']);
       Route::resource('project', 'ProjectsController'));
      

      【讨论】:

      • 有道理,但是当我这样做时,我得到一个数组到字符串的转换错误?
      • 看了一眼菜单包和文档状态,->data() 用于发送元数据信息。我认为您没有按预期在这里使用它。
      • 是的,我知道,但我无法在 routes.php 中获取当前项目 ID。否则我必须将此菜单脚本放在每个控制器操作中。
      • 放到__construct()方法中
      猜你喜欢
      • 2021-06-30
      • 1970-01-01
      • 2015-12-04
      • 2014-01-06
      • 2018-01-09
      • 2021-10-20
      • 1970-01-01
      • 2016-07-12
      • 2016-09-01
      相关资源
      最近更新 更多