Symfony:找不到" GET / content / articles / changeArt ......"

时间:2017-04-11 16:54:11

标签: symfony

我有一个按钮,其中包含指向另一个页面的链接,并将一些变量从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")

(变量&#39; 内容&#39;类型为 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,
        ));
    }

2 个答案:

答案 0 :(得分:0)

查看您的路线定义/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之前对params进行编码来解决您的问题。

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

答案 1 :(得分:-1)

'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>