我有以下的的routing.yml项:

course_chapter: 
    url: /:sf_culture/course/:courseowner/:coursename/:courseid/:chaptername/:chapterid/:page/:pageid/ 
    param: { module: course, action: showChapter } 
    requirements: 
     courseid: \d+ 

url_for():

<?php $headchapter = ($hcid) ? '?hcid='.$hcid : '' ?> 
<a href="<?php echo url_for('course/showChapter?courseowner='.$sf_params->get("courseowner").'&coursename='.$sf_params->get("coursename").'&courseid='.$sf_params->get("courseid").'&chaptername='.$chapter->getName().'&chapterid='.$chapter->getId().'&page=page&pageid=1').$headchapter ?>"> 

我不能理解它是如何工作的第二个网址,而不是第一个URL。我已经检查了操作和视图,但没有发现任何错误。

任何想法或调试技术?

+0

请张贴您的'url_for'函数的代码,它必须生成url – 2012-02-20 09:05:26

+0

@osamson:我已经添加了'url_for()'代码。这里'$ hcid = 147' – Awan 2012-02-20 10:24:10

不要这样做你的链接。有一个更清洁的方法。

<a href="<?php echo url_for('course/showChapter?courseowner='.$sf_params->get("courseowner").'&coursename='.$sf_params->get("coursename").'&courseid='.$sf_params->get("courseid").'&chaptername='.$chapter->getName().'&chapterid='.$chapter->getId().'&page=page&pageid=1').$headchapter ?>"> 

而是执行此操作:

link_to("Link text","course_chapter",array("courseowner"=>$sf_params->get("courseowner"), 
              "coursename"=>$sf_params->get("coursename"), 
              "courseid"=>$sf_params->get("courseid"), 
              "chaptername"=>$chapter->getName(), 
              "chapterid"=>$chapter->getId(), 
              "pageid"=>1, 
              "hcid"=>$hcid)) 

如果设置了一个param没有在你的路由网址存在,它会得到附加?hcid=2 你为什么要使用sf_params生成网址参数,而不是像数据库?即为什么它是$sf_params->get('courseid')而不是$course->getId()从一个学说对象?

而是采用course/showChapter使用course_chapter

路线ID我建议你去回报symfony手册,也重新读取路由部分。

编辑:

在你的路由定义,您有:

url: /:sf_culture/course/:courseowner/:coursename/:courseid/:chaptername/:chapterid/:page/:pageid/

为什么是页面的参数,如果它总是相同的值,即它会一直页。

这会更好:

url: /:sf_culture/course/:courseowner/:coursename/:courseid/:chaptername/:chapterid/page/:pageid/

而且不chapteridpageid必须的\d+太多要求的一部分?

+0

+1为您的建议和辛勤工作。让我弄清楚这一点。谢谢 – Awan 2012-02-20 10:53:51

相关推荐