2017-07-02 121 views
-1

暂时学习Symfony。甚至无法启动,因为注释路由在我的项目中不起作用。无法在Symfony 3中设置注释路由

我需要在我的项目中使用控制器中的注释路由所有项目asoft/OrganizerBundle。

我所做的:

E:\ Program Files文件\ Apache24 \ htdocs中\ symfony.local \组织者\程序\ CONFIG \ routing.yml中

organizer: 
resource: "@OrganizerBundle/Resources/config/routing.yml" 
type: annotation 

app: 
    resource: '@AppBundle/Controller/' 

E:\ Program Files文件\ Apache24 \ htdocs目录\ symfony.local \主办的\ src \轻声\ OrganizerBundle \资源\ CONFIG \的routing.yml:

organizer: 
resource: "@OrganizerBundle/Controller/" 
type:  annotation 

\ Program Files文件\ Apache24 \ htdocs中\ symfony.local \主办的\ src \轻声\ OrganizerBundle \控制器\ DefaultController.php:

<?php 
declare(strict_types = 1); 

namespace asoft\OrganizerBundle\Controller; 

use Symfony\Bundle\FrameworkBundle\Controller\Controller; 
use Symfony\Component\HttpFoundation\Request; 
use Symfony\Component\HttpFoundation\Response; 
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; 

class DefaultController extends Controller 
{ 
    /** 
    * @Route("/") 
    */ 
    public function showMainAction(): Response 
    { 
     return $this->showDayAction((new \DateTime())->format('Y-m-d')); 
    } 


    /** 
    * @Route("/{day}") 
    */ 
    public function showDayAction(string $day): Response 
    { 
     echo $day; 
     return $this->render('OrganizerBundle:Default:index.html.twig'); 
    } 
} 

当我访问URL /,我看到错误500,这在日志:

request.CRITICAL: Uncaught PHP Exception InvalidArgumentException: "The controller for URI "/" is not callable. Expected method "indexAction" on class "asoft\OrganizerBundle\Controller\DefaultController". Available methods: "showMainAction", "showDayAction", "setContainer"." at E:\Program Files\Apache24\htdocs\symfony.local\organizer\vendor\symfony\symfony\src\Symfony\Component\HttpKernel\Controller\ControllerResolver.php line 98 {"exception":"[object] (InvalidArgumentException(code: 0): The controller for URI \"/\" is not callable. Expected method \"indexAction\" on class \"asoft\OrganizerBundle\Controller\DefaultController\". Available methods: \"showMainAction\", \"showDayAction\", \"setContainer\". at E:\Program Files\Apache24\htdocs\symfony.local\organizer\vendor\symfony\symfony\src\Symfony\Component\HttpKernel\Controller\ControllerResolver.php:98)"} []

当我访问/ 2007-05-02,我收到错误404,这:

request.ERROR: Uncaught PHP Exception Symfony\Component\HttpKernel\Exception\NotFoundHttpException: "No route found for "GET /2007-05-02"" at E:\Program Files\Apache24\htdocs\symfony.local\organizer\vendor\symfony\symfony\src\Symfony\Component\HttpKernel\EventListener\RouterListener.php line 125 {"exception":"[object] (Symfony\Component\HttpKernel\Exception\NotFoundHttpException(code: 0): No route found for \"GET /2007-05-02\" at E:\Program Files\Apache24\htdocs\symfony.local\organizer\vendor\symfony\symfony\src\Symfony\Component\HttpKernel\EventListener\RouterListener.php:125, Symfony\Component\Routing\Exception\ResourceNotFoundException(code: 0): at E:\Program Files\Apache24\htdocs\symfony.local\organizer\var\cache\prod\appProdProjectContainerUrlMatcher.php:56)"} []

怎么了?我需要在我的yml文件中指定什么?

+1

'organizer:resource:“@ OrganizerBundle/Resources/config/routing.yml”type:annotation' - 从本节中删除'type:annotation'。它不是注释类型。 –

+0

清除完成+缓存。没有改变。 – Audiophile

回答

0

得到它的工作:

organizer: 
resource: '@OrganizerBundle/Resources/config/routing.yml' 

(在gobal的routing.yml)

而且

organizer: 
resource: "@OrganizerBundle/Controller/DefaultController.php" 
type: annotation 
  • 在捆绑的routing.yml中唯一

厂在刺激后。缓存清除。

0

您正在混合关于路线需要声明的方式。所以,如果你想使用注释声明你的行走路线,首先,在app/config/routing.yml你需要摆脱resource: "@OrganizerBundle/Resources/config/routing.yml"的,和喜欢的东西替代它:

organizer: 
    resource: "@OrganizerBundle/Controller/" 
    type:  annotation 

(注意压痕太)

其次,您拨打showMainAction()的方式是错误的,因为您不能以这种方式拨打format。通过添加类似以下内容来修复它:

/** 
* @return Response 
* @Route("/") 
*/ 
public function showAction() : Response 
{ 
    $datetime = new \DateTime(); 
    $date = $datetime->format('Y-m-d'); 

    return $this->testAction($date); 
}