暂时学习Symfony . 甚至无法启动,因为注释路由在我的项目中不起作用 .
我需要在我的项目asoft / OrganizerBundle中使用控件中的注释来路由所有内容 .
我做了什么:
E:\ Program Files \ Apache24 \ htdocs \ symfony.local \ organizer \ app \ config \ routing.yml
organizer:
resource: "@OrganizerBundle/Resources/config/routing.yml"
type: annotation
app:
resource: '@AppBundle/Controller/'
E:\ Program Files \ Apache24 \ htdocs \ symfony.local \ organizer \ src \ asoft \ OrganizerBundle \ Resources \ config \ routing.yml:
organizer:
resource: "@OrganizerBundle/Controller/"
type: annotation
\ Program Files \ Apache24 \ htdocs \ symfony.local \ organizer \ src \ asoft \ OrganizerBundle \ Controller \ 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:未捕获PHP异常InvalidArgumentException:“URI的控制器”/“不可调用 . 类”asoft \ OrganizerBundle \ Controller \ DefaultController“上的预期方法”indexAction“ . 可用方法:”showMainAction“,”showDayAction“, “setContainer” . ”在E:\ Program Files \ Apache24 \ htdocs \ symfony.local \ organizer \ vendor \ symfony \ symfony \ src \ Symfony \ Component \ HttpKernel \ Controller \ ControllerResolver.php第98行{“exception”:“[object](InvalidArgumentException(代码:0):URI \“/ \”的控制器不可调用 . 类\“asoft \ OrganizerBundle \ Controller \ DefaultController \”上的预期方法\“indexAction \” . 可用方法:\“showMainAction \”,\“ showDayAction \“,\”setContainer \“ . 在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:未捕获的PHP异常Symfony \ Component \ HttpKernel \ Exception \ NotFoundHttpException:“在E:\ Program Files \ Apache24 \ htdocs \ symfony.local \ organizer \中找不到”GET / 2007-05-02“的路由vendor \ symfony \ symfony \ src \ Symfony \ Component \ HttpKernel \ EventListener \ RouterListener.php第125行{“exception”:“[object](Symfony \ Component \ HttpKernel \ Exception \ NotFoundHttpException(code:0):找不到路由\“GET / 2007-05-02 \”在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文件中指定什么?
2 回答
得到了它:
(在gobal routing.yml中)
和
在Bundle的routing.yml中
仅在刺激后才能起作用 . 缓存清理 .
您正在混淆有关路线需要申报的方式 . 因此,如果您希望使用注释声明您的路由,首先,在
app/config/routing.yml
中,您需要摆脱resource: "@OrganizerBundle/Resources/config/routing.yml"
,并将其替换为:(也要注意缩进)
其次,你调用
showMainAction()
的方式是错误的,因为你不能以这种方式调用format
. 通过添加类似于: