【问题标题】:Laravel passes a question mark in route()Laravel 在 route() 中传递一个问号
【发布时间】:2014-12-17 10:27:14
【问题描述】:

我在 Laravel 中的路由函数添加了一个问号 (?),而不是斜杠 (/)

route('servers.index', 321); // http://domain/public_html/server?321

我希望它返回http://domain.com/public_html/clientarea/server/321

路线:

Route::group(['prefix' => 'clientarea'], function()
{
    Route::get('/', 'UsersController@index');

    Route::get('server/{id}', 'ServersController@index');
});

Route::resource('users', 'UsersController');
Route::resource('servers', 'ServersController');

【问题讨论】:

  • 请出示来自routes.php的相关路线
  • 回答更新。请注意我更新了我想要的回报。

标签: php laravel


【解决方案1】:

您应该研究route() 函数应该如何工作。例如,如果您打算使用route() 引用它,您应该命名该路由。命名后,您必须确保按照 Lukas 所说的那样正确传递参数。

如果 Laravel 找不到为路由定义的匹配参数,它将默认将参数作为查询字符串的一部分。由于该路由不存在,因此无法找到与您传入的参数匹配的参数。

查看文档:http://laravel.com/docs/4.2/routing#named-routes

【讨论】:

    【解决方案2】:

    route 函数需要一个参数数组。您可以通过参数名称或顺序传递值

    route('servers.index', array(321));
    

    或者这个(假设参数叫id

    route('servers.index', array('id' => 321));
    

    【讨论】:

    • 将其作为获取请求返回 domain.com/server/?id=321
    • 你甚至没有名为servers.index的路由
    • 我的错。我应该提到我有用户和服务器的资源。
    • 我明白了。这改变了一切。因为index 操作不带任何参数。你在找show吗?
    • @andershagbard 请注意,在路由文件中,路由“server/{id}”已被定义,但指向“ServersController@index”,但它不是命名路由。同时,“servers”指向资源控制器“ServersController”,这意味着“servers.index”将被设置为资源控制器路由,而不是您所期望的,在“clientarea”路由组中。
    【解决方案3】:

    来自 laravel 论坛

    $url = URL::route('welcome') . '#hash';
    return Redirect::to($url); // domain.com/welcome#hash
    

    http://laravel.io/forum/02-07-2014-how-to-append-hashtag-to-end-of-url-with-redirect

    【讨论】:

      猜你喜欢
      • 2021-06-21
      • 2019-12-02
      • 2016-07-19
      • 2015-09-15
      • 2018-11-06
      • 2018-07-23
      • 2020-12-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多