Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么我会得到;找不到用于…“的路由”;_Php_Symfony_Routing_Routes - Fatal编程技术网

Php 为什么我会得到;找不到用于…“的路由”;

Php 为什么我会得到;找不到用于…“的路由”;,php,symfony,routing,routes,Php,Symfony,Routing,Routes,你好,这是怎么回事? 这是关于使用symfony2设置路由以及为什么它会生成“找不到路由…” 例如,它看起来是这样的: app\config\routing.yml user: resource: "@UserBundle/Resources/config/routing.yml" prefix: /user/ weather: resource: "@WeatherBundle/Resources/config/routing.yml" prefix:

你好,这是怎么回事? 这是关于使用symfony2设置路由以及为什么它会生成“找不到路由…”

例如,它看起来是这样的:

app\config\routing.yml
user:
    resource: "@UserBundle/Resources/config/routing.yml"
    prefix:   /user/

weather:
    resource: "@WeatherBundle/Resources/config/routing.yml"
    prefix:   /
在我看来,现在一切都是正确的。我们将讨论
@WeatherBundle
那我的包裹看起来怎么样? 这是:

.../WeatherBundle/Resources/config/routing.yml
home:
    path:  /
    defaults: { _controller: WeatherBundle:Default:index }
    methods:  [GET]

show_by_id:
    path:  /search?{type}={query}
    defaults: { _controller: WeatherBundle:Search:id }
    requirements:
        type:  id|city

show_forecast:
    path:  /forecast?id={query}&{type}={value}
    defaults: { _controller: WeatherBundle:Forecast:forecast, type: hours, value: 6 }
    requirements:
        type:  days|hours
        value: \d+
    methods:  [GET]
那么这是正确的吗?我看不到任何错误,或者可能是关于symfony2中的路由我还不知道什么? 现在的问题是: 当我键入地址时:
http://localhost/app_dev.php/search?id=6295630
如我们所见,路径是:
/search?{type}={query}
其中
{type}=id
{query}=6295630
所以最后的形式看起来像:
/search?id=6295630
我很确定它会起作用,但它不起作用。它呼吁:

No route found for "GET /search"
404 Not Found - NotFoundHttpException
1 linked Exception: ResourceNotFoundException »
如果你想看到完整的堆栈跟踪,告诉我。
我在等你的答案

不能通过这种方式将查询字符串添加到路由定义中。不作为管线参数处理。看一看这一部分

然后你应该替换

show_by_id:
    path:  /search?{type}={query}
    defaults: { _controller: WeatherBundle:Search:id }
    requirements:
        type:  id|city

并获取控制器中的路线参数值,如所述

代码重构,

  • 名为
    id
    的操作并不意味着很多>
    WeatherBundle:Search:id
更新,

要将
/search?id=6295630
替换为
/search/[id | city]/{id}
,您必须

1-将路径更改为:
/search/{type}/{id}

2-将您的
show\u by\u id
路线要求更改为:

  requirements:
    type:  id|city
3-将您的行动签名更改为

  public function idAction($type, $id)
同样,我认为在这个特定用例中使用查询字符串不是一个好主意。 但是,当您询问使用查询字符串的示例时,这里有一个(取自文档):

假设您有一条具有以下路径的路由
/blog/{page}
。调用
/blog/2?category=Symfony
会将
category
参数(作为查询字符串)附加到路由中


然后,您可以通过调用
$request->query->get('category')在控制器中访问此参数
(其中,
$request
表示当前已处理的请求)

您不能以这种方式将查询字符串添加到路由定义中。不作为管线参数处理。看一看这一部分

然后你应该替换

show_by_id:
    path:  /search?{type}={query}
    defaults: { _controller: WeatherBundle:Search:id }
    requirements:
        type:  id|city

并获取控制器中的路线参数值,如所述

代码重构,

  • 名为
    id
    的操作并不意味着很多>
    WeatherBundle:Search:id
更新,

要将
/search?id=6295630
替换为
/search/[id | city]/{id}
,您必须

1-将路径更改为:
/search/{type}/{id}

2-将您的
show\u by\u id
路线要求更改为:

  requirements:
    type:  id|city
3-将您的行动签名更改为

  public function idAction($type, $id)
同样,我认为在这个特定用例中使用查询字符串不是一个好主意。 但是,当您询问使用查询字符串的示例时,这里有一个(取自文档):

假设您有一条具有以下路径的路由
/blog/{page}
。调用
/blog/2?category=Symfony
会将
category
参数(作为查询字符串)附加到路由中


然后,您可以通过调用
$request->query->get('category')在控制器中访问此参数
(其中,
$request
表示当前已处理的请求)

您不能以这种方式将查询字符串添加到路由定义中。不作为管线参数处理。看一看这一部分

然后你应该替换

show_by_id:
    path:  /search?{type}={query}
    defaults: { _controller: WeatherBundle:Search:id }
    requirements:
        type:  id|city

并获取控制器中的路线参数值,如所述

代码重构,

  • 名为
    id
    的操作并不意味着很多>
    WeatherBundle:Search:id
更新,

要将
/search?id=6295630
替换为
/search/[id | city]/{id}
,您必须

1-将路径更改为:
/search/{type}/{id}

2-将您的
show\u by\u id
路线要求更改为:

  requirements:
    type:  id|city
3-将您的行动签名更改为

  public function idAction($type, $id)
同样,我认为在这个特定用例中使用查询字符串不是一个好主意。 但是,当您询问使用查询字符串的示例时,这里有一个(取自文档):

假设您有一条具有以下路径的路由
/blog/{page}
。调用
/blog/2?category=Symfony
会将
category
参数(作为查询字符串)附加到路由中


然后,您可以通过调用
$request->query->get('category')在控制器中访问此参数
(其中,
$request
表示当前已处理的请求)

您不能以这种方式将查询字符串添加到路由定义中。不作为管线参数处理。看一看这一部分

然后你应该替换

show_by_id:
    path:  /search?{type}={query}
    defaults: { _controller: WeatherBundle:Search:id }
    requirements:
        type:  id|city

并获取控制器中的路线参数值,如所述

代码重构,

  • 名为
    id
    的操作并不意味着很多>
    WeatherBundle:Search:id
更新,

要将
/search?id=6295630
替换为
/search/[id | city]/{id}
,您必须

1-将路径更改为:
/search/{type}/{id}

2-将您的
show\u by\u id
路线要求更改为:

  requirements:
    type:  id|city
3-将您的行动签名更改为

  public function idAction($type, $id)
同样,我认为在这个特定用例中使用查询字符串不是一个好主意。 但是,当您询问使用查询字符串的示例时,这里有一个(取自文档):

假设您有一条具有以下路径的路由
/blog/{page}
。调用
/blog/2?category=Symfony