所以,我有一个表格,每行都有一个复选框,如下所示:
<form name="" action={{ path('mypath') }}" method="post">
<button name="print">Print</button>
<button name="delete">Delete</button>
<table>
{% for client in clienti %}
<tr>
<td><input type="checkbox" name="action[]" value="{{ client.id }}" /></td>
</tr>
.
.
.
{% endfor %}
</table>
</form>
现在,在我的控制器中,我想检查按下了什么按钮。我该怎么做?
在我的其他形式中,由symfony生成它很容易,因为我有一个表单对象和 一个非常有用的方法:
if ($form->get('delete')->isClicked()) {
// delete ...
}
我想知道正确的方法来做到这一点。
谢谢。
答案 0 :(得分:17)
从Symfony 2.3开始,您可以:
形式:
$form = $this->createFormBuilder($task)
->add('name', 'text')
->add('save', 'submit')
->add('save_and_add', 'submit')
->getForm();
控制器:
if ($form->isValid()) {
// ... do something
// the save_and_add button was clicked
if ($form->get('save_and_add')->isClicked()) {
// probably redirect to the add page again
}
// redirect to the show page for the just submitted item
}
见这里:http://symfony.com/blog/new-in-symfony-2-3-buttons-support-in-forms
答案 1 :(得分:11)
您可以使用例如
$request = $this->get('request');
if ($request->request->has('delete'))
{
...
}
答案 2 :(得分:2)
只需在表单构建器中创建按钮,在视图中呈现它们并使用您在其他表单中使用的相同方法:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('delete', 'button')
->add('print', 'button')
}
在您看来:
<form name="" action="{{ path('mypath') }}" method="post">
{{ form_widget(form.print) }}
{{ form_widget(form.delete) }}
...
</form>
答案 3 :(得分:2)
Symfony3的更新:
<p>
Here is your link:
<a href='"/user/"<%=userId%>'>the link</a>
<%=userId%>
</p>