【问题标题】:Laravel named routes parameter not working correctlyLaravel 命名路由参数无法正常工作
【发布时间】:2023-03-13 22:46:02
【问题描述】:

我目前正在使用 Laravel 5.3,并且我有许多类似的路线。

Route::get('/news/create/{product}', 'NewsController@create')->name('news::create');

所以在我的刀片模板中,我使用 route() 函数,如下所示:

{{route('news::create','car')}}

但是生成的url是

/news/create?car

不是必需的

/news/create/car

如果我把它放在一个数组中,也会发生同样的事情:

{{route('news::create',['car'])}}

如果我给它一个这样的键:

{{route('news::create',['product'=>'car'])}}

我明白了:

/news/create?product=car

如何获取正确的 url,以便将其作为参数传递给“create”函数?

【问题讨论】:

  • 第一个问题 - 为什么你命名的路线里面有冒号?

标签: php laravel laravel-5 laravel-routing


【解决方案1】:

首先,看看你的路线命名。我认为命名像“news::create”这样的路由并没有什么特别的错误,除了它很丑而且很可能被认为是不好的做法。我喜欢使用camel casing,这意味着我会使用createNews 之类的名称。回到旧代码部分工作会容易得多,并且会阻止其他程序员在与您一起工作时刺伤您。

我们可以命名路由的原因是即使我们更改了路由 URI 或控制器端点,名称也保持不变。我们可以使用路由参数将变量传递给它。

Route::get('/news/create/{product}', array('as' => 'createNews', 'uses' => 'NewsController@create'));


route('createNews', ['product' => 'car']);

【讨论】:

    【解决方案2】:

    {{route('news::create',['product => 'car'])}} 应该解决你的问题。 Laravel 使用命名路由,并期望一个包含键的数组作为名称和值。

    在此处阅读所有相关信息:https://laravel.com/docs/5.3/redirects#redirecting-named-routes

    【讨论】:

      猜你喜欢
      • 2018-01-17
      • 2017-10-15
      • 1970-01-01
      • 2016-12-05
      • 1970-01-01
      • 2015-11-07
      • 1970-01-01
      相关资源
      最近更新 更多