我的routing.yml中有一条路线如下:
pattern: /admin/clients/{clientid}/projects/{projectid}/review/{id}/comments
defaults: { _controller: ShoutAdminBundle:Project:revcomm }
requirements:
_method: POST
现在,在页面(评论页面)上,我有一个表单,用户将在其中输入评论,然后将其提交到该页面。然后用户点击提交,他们将被带回同一页面,但他们的评论将被提交到数据库然后显示。
我的表单代码如下所示:
<form action="{{ path('ShoutAdminBundle_adminprojectreviewcommentssuccess') }}" method="post" {{ form_enctype(form) }} class="blogger">
{{ form_errors(form) }}
<p class="comments">
{{ form_label(form.from, 'Your Name*', { 'attr': {'class': 'title'} }) }}
{{ form_errors(form.from) }}
{{ form_widget(form.from, { 'attr': {'class': 'textfield'}}) }}
</p>
<p class="comments">
{{ form_label(form.comment, 'Your Comment*', { 'attr': {'class': 'title'} }) }}
{{ form_errors(form.comment) }}
{{ form_widget(form.comment, { 'attr': {'class': 'textfield'}}) }}
</p>
<p class="comments_save">
<input type="submit" value="Post Your Comment" id="savebutton" class="savebutton" />
</p>
{{ form_rest(form) }}
</form>
现在。呈现页面时,我收到以下错误:
在渲染模板期间抛出异常(“The “ShoutAdminBundle_route”路由有一些缺少必需参数 (“id”,“projectid”)。“in in 第54行的“ShoutAdminBundle:默认:projectreviewcomments.html.twig”。
如何将变量{clientid}
,{projectid}
和{id}
传递给页面?这些变量已在页面中声明,这是一个如何在表单提交中包含它们的问题?
干杯
答案 0 :(得分:4)
您可以使用关联数组通过控制器传递它们:
class ProjectController extends Controller
{
public function revcommAction($clientid, $projectid, $id)
{
// ...
$params = array(
'clientid' => $clientid,
'projectid' => $projectid,
'id' => $id
);
return $this->render('ShoutAdminBundle:Default:projectreviewcomments.html.twig', $params);
}
}
要在模板中向此控制器呈现链接(或表单操作的路径),您可以使用path()
表示相对,url()
表示绝对链接。第二个参数接受构造链接所需的任何参数,例如:
<a href="{{ path('my_route_name', {'clientid': clientid, ...}) }}"></a>