Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.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 为什么我的symfony路由不工作?_Php_Symfony - Fatal编程技术网

Php 为什么我的symfony路由不工作?

Php 为什么我的symfony路由不工作?,php,symfony,Php,Symfony,嗨,我在symfony的路线有问题。我的路由_dev看起来像: _test: resource: "@MyBundle/Controller/DefaultController.php" type: annotation prefix: /test 然后我有一个控制器: /** * @Route("/", name="_test") * @Template() */ public function indexAction($name) { re

嗨,我在symfony的路线有问题。我的路由_dev看起来像:

_test:
    resource: "@MyBundle/Controller/DefaultController.php"
    type:     annotation
    prefix:   /test
然后我有一个控制器:

/**
 * @Route("/", name="_test")
 * @Template()
 */
public function indexAction($name)
{
    return array('name' => $name);
}
当我尝试运行/test时,我会收到以下消息:

No route found for "GET /test"
404 Not Found - NotFoundHttpException
1 linked Exception: ResourceNotFoundException »
我不知道错误在哪里。我需要你的帮助。如何发现问题


编辑:我正在使用app_dev.php而不是app.php,也许你必须使用url。或者将路由信息复制到routing.yml(不是routing\u dev.yml)

首先,必须确保routing.yml导入文件routing\u dev.yml

然后,必须在路由中定义传入参数的$name变量。如果此参数是可选的,则可以为其指定默认值

此外,请注意,可以将前缀直接放在注释中

/**
 * @Route("/blog")
 */
class TheClassController extends Controller
{
    /**
     * @Route("/{name}", name="_test", defaults={"name" = "Jean"})
     * @Template()
     */
    public function indexAction($name)
    {
         return array('name'=>$name);
    }
}

之后,您可以运行命令
php-app/console-router:debug
,以测试路由。

您是否真的在url/test中键入了内容?因为您的路由只是“/”,所以您给出的名称用于从模板生成该路由。如果希望url为/test,则应将路由参数更改为
@route(“/test”,name=“test”)

必须为操作设置路由。不仅仅是整个控制器

您的routing.yml应该如下所示:

mybundle_controller:
    resource: "@MyBundle/Controller"
    type:     annotation
    prefix:   /test
您的控制器如下所示:

/**
 * @Route("/") #Note you can omit this, since you set the prefix in the routing.yml
 * 
 */
public function indexAction($name)
{
    /**
     * @Route("/", name="_test"
     * @Template()
     */
    return array('name' => $name);
}
尝试运行php应用程序/控制台路由器:调试

它应该会给你类似的回报

_test                   ANY      /test/

如果您使用的是Symfony 4,则只需安装条令/注释软件包。要下载,请在终端运行中:

composer require annotations
该命令将把包下载到您的供应商文件夹中,并在config/routes文件夹下添加新的annotations.yaml文件。确保annotations.yaml包含以下行:

controllers:
    resource: ../../src/Controller/
    type: annotation

您不需要在config/routes.yaml文件中进行任何额外的路由设置。

您的路由是否具有相同的名称(name=“\u test”)?在控制台中运行此命令:app/console router:debug-这可能非常有助于确定错误是什么嗯,我做到了,但没有带有\u test的行好的,现在添加了@route(“/test”,name)=“test”)当我调用“php应用程序/控制台路由器:调试”时,但仍然没有找到“get/test”的路由,我没有更新答案。特别是关于路由yml的部分。好的,现在在我调用“php应用程序/控制台路由器:调试”时添加了一个/test,但对于symfony 3.4:php bin/console调试:路由器,仍然没有找到“get/test”的路由