添加“a”的最佳方式是什么;“确认选项”;是否在Symfony2中删除表单?
如果使用控制台在Symfony2中为实体创建CRUD代码,则最终将得到一个非常基本的删除函数 此功能精简高效,但不提供“确定吗?”-确认。如果要删除的实体存在,将立即删除该实体 是否有人对添加用户确认的最简单方法提出了建议 到目前为止,我一直在使用:添加“a”的最佳方式是什么;“确认选项”;是否在Symfony2中删除表单?,symfony,controller,crud,confirm,Symfony,Controller,Crud,Confirm,如果使用控制台在Symfony2中为实体创建CRUD代码,则最终将得到一个非常基本的删除函数 此功能精简高效,但不提供“确定吗?”-确认。如果要删除的实体存在,将立即删除该实体 是否有人对添加用户确认的最简单方法提出了建议 到目前为止,我一直在使用: 额外的控制器功能 jQuery 虽然Symfony2没有内置选项,但这似乎有点奇怪。有更好的主意吗?只需在删除链接上使用确认javascript函数即可 <a href="{{ path('delete_route', {csrf:...
- 额外的控制器功能
- jQuery
虽然Symfony2没有内置选项,但这似乎有点奇怪。有更好的主意吗?只需在删除链接上使用确认javascript函数即可
<a href="{{ path('delete_route', {csrf:...}) }}" onclick="return confirm('are u sure?')">delete</a>
您还可以使用附加属性呈现表单的基本删除字段: 在细枝模板中: 问题在于:
{form(delete_form,{'attr':{'onclick':'return confirm(“你确定吗?”)}}}}
这会导致弹出一个双重确认框。更好的解决方案是将其放置在deleteForm上的控制器内
private function createDeleteForm($id)
{
return $this->createFormBuilder()
->setAction($this->generateUrl('my_controller_delete', array('id' => $id)))
->setMethod('DELETE')
->add('submit', 'submit', array('label' => 'Delete',
'attr' => array(
'onclick' => 'return confirm("Are you sure?")'
)))
->getForm();
}
然后按钮上的onclick函数将取代表单。轻量级解决方案是实际显示表单两次: 首先,用户填写所有字段。然后,我们认识到它尚未得到确认,因此我们重新渲染它。这一次javascript会立即显示确认对话框 为此,我们在表单中添加了一个隐藏字段
confirmed
,并在细枝渲染中添加了一个参数:
$builder = $this->createFormBuilder(...);
$builder->add('confirmed', HiddenType::class, ['mapped' => false]);
$form = $builder->getForm();
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
if($form->get('confirmed')->getData() != true) {
// re-render with confirmation flag set
return $this->render('default/form.html.twig', [
'form' => $form->createView(),
'confirm' => true]);
}
} else {
return $this->render('default/form.html.twig', [
'form' => $form->createView(),
'confirm' => false]);
}
并在模板中添加javascript,如:
{{ form_start(form) }}
{{ form_widget(form) }}
{{ form_end(form) }}
<script>
$(document).ready(function () {
var c = confirm('Really sure?');
if(c) {
$('#form_confirmed').val(true);
$('form')[0].submit();
}
});
</script>
{{form_start(form)}
{{form_widget(form)}
{{form_end(form)}}
$(文档).ready(函数(){
var c=确认('真的确定?');
如果(c){
$(“#表#确认”).val(真);
$('form')[0]。提交();
}
});
为什么jQuery或简单的Javascript不适合您?是的,但我可以想象Symfony2会有一个内置选项。我想还没有,javascript是最好的选择。我建议javascript确认,如果数据很重要,可以使用softdelete扩展,这样实体就不会完全从数据库中删除。好的,谢谢Mike,我会按照你的建议构建它。因此,请考虑你的答案;我使用了这种方法,但是在表单中的div中,渲染是重复的onclick,使得click显示消息两次。
{{ form_start(form) }}
{{ form_widget(form) }}
{{ form_end(form) }}
<script>
$(document).ready(function () {
var c = confirm('Really sure?');
if(c) {
$('#form_confirmed').val(true);
$('form')[0].submit();
}
});
</script>