我有这个问题:
我的第一条路线不允许我使用不是数字的任何字符(来自正则表达式),这非常有效(告诉我,如果您需要显示结果的屏幕)
但是第二个让我使用任何字符作为id,我不明白为什么,我尝试清除缓存(以及许多其他东西),但仍然允许我使用字母字符。
我目前有两条路线:
<?php
// src/Controller/AdvertController.php
namespace App\Controller;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Twig\Environment;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
/**
* @Route("/advert")
*/
class AdvertController extends AbstractController
{
/**
* @Route("/{page}", name="oc_advert_index", requirements={"page" = "\d+"}, defaults={"page" = 1})
*/
public function index(Environment $twig, $page)
{
$content = $twig->render('Advert/index.html.twig', ['page' => $page, 'name' => 'alex']);
return new Response($content);
}
/**
* @Route("/view/{id}", name="oc_advert_view", requirements={"id" = "\d+"})
*/
public function view(Environment $twig, $id)
{
$content = $twig->render('Advert/view.html.twig', ['id' => $id, 'name' => 'alex']);
return new Response($content);
}
}
我的模板是基本的Twig模板(显示“ id”或“ page”),我试图寻找隐藏的空间和其他内容,但找不到区别(不包括名称“ id”和“ page”)
EDIT1:这是我执行时得到的php bin/console router/match /advert/view/abc
:
[OK] Route "oc_advert_view" matches
+--------------+---------------------------------------------------------+
| Property | Value |
+--------------+---------------------------------------------------------+
| Route Name | oc_advert_view |
| Path | /advert/view/{id} |
| Path Regex | #^/advert/view/(?P<id>[^/]++)$#sDu |
| Host | ANY |
| Host Regex | |
| Scheme | ANY |
| Method | ANY |
| Requirements | NO CUSTOM |
| Class | Symfony\Component\Routing\Route |
| Defaults | _controller: App\Controller\AdvertController::view |
| Options | compiler_class: Symfony\Component\Routing\RouteCompiler |
| | utf8: true |
+--------------+---------------------------------------------------------+
似乎由于某些原因未检测到/未使用“需求”,有人知道原因吗?
EDIT2:这是我做的时候得到的 php bin/console router:match /advert/123
[OK] Route "oc_advert_index" matches
+--------------+---------------------------------------------------------+
| Property | Value |
+--------------+---------------------------------------------------------+
| Route Name | oc_advert_index |
| Path | /advert/{page} |
| Path Regex | #^/advert(?:/(?P<page>\d+))?$#sDu |
| Host | ANY |
| Host Regex | |
| Scheme | ANY |
| Method | ANY |
| Requirements | page: \d+ |
| Class | Symfony\Component\Routing\Route |
| Defaults | _controller: App\Controller\AdvertController::index |
| | page: 1 |
| Options | compiler_class: Symfony\Component\Routing\RouteCompiler |
| | utf8: true |
+--------------+---------------------------------------------------------+
在这里我们可以看到它检测到了正则表达式,感觉这是一个错字错误,但是我至少复制/粘贴了3次,非常奇怪:/
最后编辑:谢谢所有试图找到问题的人,我学到了一些东西,所以我非常感激(对您的时间浪费^^)
解决:在config / routes.yaml和我的路由之间存在冲突,我必须删除重复的路由。(我遵循的课程是,首先在config / routes.yaml中声明它,然后在带有注释的情况下声明路由,而忘记了删除config / routes.yaml内容的步骤)
谢谢所有试图找到问题的人,我学到了一些东西,所以我非常感激(很抱歉浪费时间^^)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句