我已经在这里查看了其他帖子,他们的解决方案都没有奏效 试过前缀"< \?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
答案 0 :(得分:1)
实际上你的声明都可能是错误的。
在您的控制器中,您正在使用
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
并且根据documentation,对于Symfony&lt; = 3.3似乎是正确的,但对于Symfony&gt; = 3.4应该是
use Symfony\Component\Routing\Annotation\Route;
。
在您的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
...
之后,它会起作用。
如果您使用的是Symfony 4,我建议使用yaml版本(第二个),因为这个附带(Symfony)
我的意思是在创建新路线时不要混淆。