Symfony路由不起作用?
我正在从事现有项目。我有以下两个网址Symfony路由不起作用?
http://example.dev/en/course/myUserName/myCourseName/150/myChapterName/1016/page/1/?hcid=147
http://example.dev/en/course/myUserName/myCourseName/150/myChapterName/1016/page/2/?hcid=147
第二URL工作正常,但第一个URL是给我下面的错误:
Unable to find a matching route to generate url for params "array ( 'action' => 'showChapter', 'module' => 'course', 'courseowner' => 'myUserName', 'coursename' => 'myCourseName', 'courseid' => '150', 'chaptername' => 'myChapterName',)".,
referer: http://example.dev/en/course/myUserName/myCourseName/150/myChapterName/1016/page/1/?hcid=147
我有以下的的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。我已经检查了操作和视图,但没有发现任何错误。
任何想法或调试技术?
不要这样做你的链接。有一个更清洁的方法。
<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/
而且不chapterid
和pageid
必须的\d+
太多要求的一部分?
+1为您的建议和辛勤工作。让我弄清楚这一点。谢谢 – Awan 2012-02-20 10:53:51
请张贴您的'url_for'函数的代码,它必须生成url – 2012-02-20 09:05:26
@osamson:我已经添加了'url_for()'代码。这里'$ hcid = 147' – Awan 2012-02-20 10:24:10