为什么路线要求适用于我的第一条路线而不适用于我的第二条路线?

pander_alexander

我有这个问题:

我的第一条路线不允许我使用不是数字的任何字符(来自正则表达式),这非常有效(告诉我,如果您需要显示结果的屏幕)

但是第二个让我使用任何字符作为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次,非常奇怪:/


最后编辑:谢谢所有试图找到问题的人,我学到了一些东西,所以我非常感激(对您的时间浪费^^)

pander_alexander

解决:在config / routes.yaml和我的路由之间存在冲突,我必须删除重复的路由。(我遵循的课程是,首先在config / routes.yaml中声明它,然后在带有注释的情况下声明路由,而忘记了删除config / routes.yaml内容的步骤)

谢谢所有试图找到问题的人,我学到了一些东西,所以我非常感激(很抱歉浪费时间^^)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

当用户在 Vue 和 Vuex 中从第一条路线到第二条路线和第二条路线到第一条路线时,想要在第一条路线上运行功能

Symfony:如何在地址栏中显示第一条路线,第二条路线可以访问

尝试获取会话数据,从一条路线工作不适用于其他路线

铁路由器仅适用于一条路线

Laravel 路线部分适用于我的安装和停止路线

我正在遍历数据库,但我的div模型仅适用于第一条记录,不适用于其他记录

为什么只有我的第二条if语句给出结果并覆盖我的第一条if语句?

为什么“.includes”不适用于我的二维数组?

我的Laravel路线不适用于CentOS

如何订阅第一条路线

为什么我的 JSON 不适用于我的 sublime 文本设置?

为什么我的 CSS 不适用于我的所有 EJS 循环?

为什么我的样式不适用于我的子组件?

为什么我的CSS样式表不适用于我的HTML文档?

为什么我的 SQL 查询不适用于我的 where not equal 条件?

为什么我的代码不适用于我的 VS Code 和代码块?

我的where子句不适用于我的结果

为什么 CORS 不适用于我的 express/react 应用程序?

为什么网络策略入口不适用于我的情况

为什么 GridView 过滤器不适用于我?

为什么PyCharm的自动完成功能不适用于我安装的库?

为什么顶部填充不适用于我的锚点?

为什么 uglify 不适用于我在 gulp 中的 javascript 文件

为什么Xcode的错误检查不适用于我的测试文件夹?

为什么 Leaflet.LayerGroup.Collision 不适用于我的 L.GeoJSON?

为什么数据绑定不适用于我的自定义属性指令

为什么 Addon XLSX 不适用于我系统中的以下代码?

Formatter black 不适用于我的 VSCode ......但为什么呢?

为什么反应“关键”道具不适用于我的以下情况?