找不到" GET / lucky / number"

时间:2018-01-24 00:48:31

标签: symfony netbeans routing

我已经在这里查看了其他帖子,他们的解决方案都没有奏效 试过前缀"< \?php"到文件, 尝试更改清除缓存 没有人工作过。

全新安装Ubuntu 16.04.3 LTS。 在NetBeans IDE中运行

LuckyNumberController.php如下:

<?php
// src/AppBundle/Controller/LuckyController.php
namespace AppBundle\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Response;

class LuckyController extends Controller
{
/**
 * @Route("/lucky/number",name="lucky")
 */
 public function numberAction()
 {
    $number = rand(0, 100);

    return new Response(
        '<html><body>Lucky number: '.$number.'</body></html>'
    );
  }
}

下面的Routing.yml:

app:
    resource: @AppBundle/Controller/
    type:     annotation

homepage:
    path: /
    defaults:
        _controller: FrameworkBundle:Template:template
        template:    'default/homepage.html.twig'

lucky:
    path: /lucky/number
    controller: App\Controller\LuckyController::numberAction

2 个答案:

答案 0 :(得分:1)

实际上你的声明都可能是错误的。

注释

在您的控制器中,您正在使用

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;

并且根据documentation,对于Symfony&lt; = 3.3似乎是正确的,但对于Symfony&gt; = 3.4应该是

use Symfony\Component\Routing\Annotation\Route;

YAML

在您的yaml文件中,您指定了

controller: App\Controller\LuckyController::numberAction

实际上你的Controller命名空间是AppBundle\Controller;,所以你的声明应该是

controller: AppBundle\Controller\LuckyController::numberAction

答案 1 :(得分:0)

首先,您不需要注释路由和yml路由。你必须选择一个。我更喜欢yml版本

删除

...
/**
 * @Route("/lucky/number",name="lucky")
 */
...

或者你可以删除这个

...
lucky:
    path: /lucky/number
    controller: App\Controller\LuckyController::numberAction
...

之后,它会起作用。

EDIT1:

如果您使用的是Symfony 4,我建议使用yaml版本(第二个),因为这个附带(Symfony)

EDIT2:

我的意思是在创建新路线时不要混淆。