【问题标题】:Symfony: No route found for "GET/content/articles/changeArt......"Symfony:找不到“GET/content/articles/changeArt......”的路线
【发布时间】:2017-04-11 16:54:10
【问题描述】:

我有一个包含指向另一个页面的链接的按钮,并将一些变量从 twig 模板传递给该页面的控制器操作:

<button class="btn btn-warning btn-xs" title="modifier l'article">
                                <a href="{{ path('changeArticle',{'id': id,'title':titre,'content':corps,'date':pub|date('d/m/Y')}) }}" style="color: #ffffee;text-decoration: none;"><i class="fa fa-pencil-square-o"></i></a>
                            </button>

变量成功传递给操作,但出现错误:

 No route found for "GET /content/articles/changeArt/3/test3/%3Ci%3E%3Cu%20style=%22background-color:%20rgb%28255,%20255,%200%29;%22%3Esdfghyujhgrertjr%22%5Ekrjthbkrkjgjgrhgiebgfjkebvkebvkezbkzbkdzbdkzbckdszb%20sdnckdzb%20nc,de%3C/u%3E%3C/i%3E/11/04/2017" (from "http://127.0.0.1/PFE_CNAM/web/content/articles")

(变量'content'它的类型是BLOB,当我改变它的类型时我开始得到这个错误,因为在它是类型之前文本,此操作效果很好)。 这是操作代码:

 /**
     * @Route("/content/articles/changeArt/{id}/{title}/{content}/{date}",defaults={"id": 0,"title": 0,"content": 0,"date": 0},name="changeArticle")
     * @Template()
     */
    public function changeArticleAction($id,$title,$content,$date)
    {
        $session = new Session();
        $session->start();
        $search = $session->get('user');

        $gestAcces = $session->get('acces');
        $gestEtat = $session->get('etatUser');
        $gestCont = $session->get('contenu');
        $repMsg = $session->get('repMsg');
        $gestRec = $session->get('Reclam');
        $gestMess = $session->get('gestMess');
        $gestMp = $session->get('gestMp');


        return $this->render('CNAMCMSBundle:Default:changeArticle.html.twig', array('search' => $search,
            'contenu' => $gestCont,
            'gestAcces' => $gestAcces,
            'gestEtat' => $gestEtat,
            'repMsg' => $repMsg,
            'gestRec' => $gestRec,
            'gestMess' => $gestMess,
            'gestMp' => $gestMp,
            'date'=>$date,
            'id'=>$id,
            'title'=>$title,
            'content'=>$content,
        ));
    }

【问题讨论】:

  • 谁是corps
  • corps 是 twig 模板中 texteara 的名称。 {'content':corps}

标签: symfony


【解决方案1】:

查看您的路由定义/content/articles/changeArt/{id}/{title}/{content}/{date},您可以看到这条路由恰好需要 4 个参数。然后,查看生成的路径/content/articles/changeArt/3/test3/%3Ci%3E%3Cu%20style=%22background-color:%20rgb%28255,%20255,%200%29;%22%3Esdfghyujhgrertjr%22%5Ekrjthbkrkjgjgrhgiebgfjkebvkebvkezbkzbkdzbdkzbckdszb%20sdnckdzb%20nc,de%3C/u%3E%3C/i%3E/11/04/2017,它有很多由/ 分隔的参数,因为您的参数包含斜杠。

当 URI 与路由路径匹配时,它看起来像:

id:      3
title:   test3
content: %3Ci%3E%3Cu%20style=%22background-color:%20rgb%28255,%20255,%200%29;%22%3Esdfghyujhgrertjr%22%5Ekrjthbkrkjgjgrhgiebgfjkebvkebvkezbkzbkdzbdkzbckdszb%20sdnckdzb%20nc,de%3C
date:    u%3E%3C
         i%3E // how about these extra params?
         11   // 
         04   // 
         2017 // 

我不知道您使用的是哪个 Symfony 版本,如果您的参数包含 /,它应该会抛出异常。您可以通过在生成 url 之前对参数进行编码来解决您的问题。

{{ path('changeArticle', {
    id: id,
    title: titre|url_encode,
    content: corps|url_encode,
    date: pub|date('d/m/Y')|url_encode
}) }}

【讨论】:

  • 这没有帮助:(
  • 额外的 '/' 被添加到 blob 变量内容中。我该如何解决?我将日期格式更改为 ('d-m-Y') 以摆脱日期“/”
  • 在您的情况下,您应该将该 blob 参数移动到路由 /content/articles/changeArt/{id}/{title}/{date}/{content} 的末尾。然后,接受date param ` 之后的任何内容,添加:requirements: {content: .+}
  • 我遇到了一个新的语义错误:找不到常量要求
  • 啊它的,requirements= {"content": ".+"}
【解决方案2】:

'date':pub|date('d/m/Y') 是错字吗?

试试这个:

<button class="btn btn-warning btn-xs" title="modifier l'article">
    <a 
        href="{{ path('changeArticle',{
            'id' : id,
            'title' : titre,
            'content' : corps,
            'date' : date|date('d/m/Y')
        }) }}" 
        style="color: #ffffee;text-decoration: none;"><i class="fa fa-pencil-square-o"></i>
   </a>
</button>

【讨论】:

  • no no 正如我所说的twig没有问题,因为您看到变量已成功传递给控制器​​(您可以在错误中看到变量内容)所以我认为问题出在操作,但我找不到它
  • 树枝没问题??为什么你的 CSS 样式会在构建的 URL 中?
  • and for "pub|date('d/m/Y')" pub 是 twig 中的变量名
  • 我的 css 有什么问题?!!!!!模板和 css 不能导致“未找到路由”错误
  • 正如我所说,在我更改“内容”类型之前一切正常,它是一个字符串,我将其更改为 blob
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-30
  • 2018-10-24
  • 1970-01-01
  • 2017-01-01
  • 2013-12-11
  • 1970-01-01
相关资源
最近更新 更多