【发布时间】:2015-03-07 15:47:17
【问题描述】:
我在 Symfony2 中创建了一个嵌入式表单,它在一个“部门”中有许多“员工”。现在,许多员工的“名字”和“姓氏”的添加在“部门”表单上运行良好(为此我使用了 jQuery)。我想要表单上的“删除”按钮功能,我无法弄清楚。谁能帮我删除按钮功能?
部门类型.php
<?php
namespace InstituteEvents\FormBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
class DepartmentType extends AbstractType
{
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('name')
->add('employees','collection', array(
'type' => new EmployeeType(),
'prototype' => true,
'allow_add' => true,
'by_reference' =>false
))
;
}
/**
* @param OptionsResolverInterface $resolver
*/
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'InstituteEvents\FormBundle\Entity\Department'
));
}
/**
* @return string
*/
public function getName()
{
return 'department';
}
}
EmployeeType.php
<?php
namespace InstituteEvents\FormBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
class EmployeeType extends AbstractType
{
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('firstname')
->add('lastname')
;
}
/**
* @param OptionsResolverInterface $resolver
*/
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'InstituteEvents\FormBundle\Entity\Employee'
));
}
/**
* @return string
*/
public function getName()
{
return 'employee';
}
}
index.html.twig - 此文件包含 jQuery 中的“添加员工”按钮功能。在这里,我想要“删除员工”按钮+功能。我不太懂 javascript 或 jQuery,所以我需要帮助来添加“删除员工”按钮 + 代码。
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script>
$(function() {
var index = 0;
var prototype = $('ul.form-employees').data('prototype');
$('#form-employee-btn').on('click', function() {
var newForm = prototype.replace(/__name__/g, index++);
var newLi = $('<li></li>');
newLi.append(newForm);
$(this).before(newLi);
});
});
</script>
<form method = "post">
{{ form_label(form.name, 'Department Name') }}
{{ form_widget(form.name) }}
<ul class="form-employees" data-prototype = "{{ form_widget(form.employees.vars.prototype)|e }}">
<input id="form-employee-btn" type="button" value="Add Employees"/>
</ul>
{{ form_widget(form._token) }}
<input type="submit" value="Submit"/>
</form>
【问题讨论】:
-
您应该使用文档:symfony.com/doc/current/cookbook/form/…,因为您所需要的都在里面
-
我无法从食谱转换为上面 index.html.twig 中“删除员工”按钮及其代码的 jQuery 代码。请帮忙
-
Hey Udan,你能帮我编写“删除员工”按钮的 jQuery 代码吗?因为我不知道 jQuery
-
您尚未在
DepartmentType表单上设置allow_delete属性。如何处理删除被广泛覆盖here(PHP + jQ 代码) -
谢谢 Elias Van Ootegem
标签: javascript php jquery forms symfony