Не делайте ваши ссылки такими. Есть более чистый путь.
<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 не существует в вашем URL-адресе маршрутизации, он будет добавлен как ?hcid=2
Почему вы используете sf_params
для генерации параметров URL, а не базы данных? то есть почему $sf_params->get('courseid')
, а не $course->getId()
от объекта учения?
Также вместо course/showChapter
используйте идентификатор маршрута course_chapter
Я бы посоветовал вам вернуться к руководству Symfony и перечитать раздел маршрутизации.
РЕДАКТИРОВАТЬ:
В вашем определении маршрута у вас есть:
url: /:sf_culture/course/:courseowner/:coursename/:courseid/:chaptername/:chapterid/:page/:pageid/
почему page это параметр, если он всегда имеет одно и то же значение, т. Е. Всегда будет page.
Это было бы лучше:
url: /:sf_culture/course/:courseowner/:coursename/:courseid/:chaptername/:chapterid/page/:pageid/
А chapterid
и pageid
не должны быть частью требований \d+
тоже?