我有两个实体文件,一个是Activite.php,另一个是Mesurage.php。 现在我想显示一个激活形式,其中包含3个字段类型的活动,安置和消息。 mesurage将是一个从mesurage表中获取数据的选择。这是我在Activite.php中编写的代码,用于为mesurage_id创建many_to_one字段
/**
* @ORM\Id
* @ORM\ManyToOne(targetEntity="GestionEnvironnementale\ISO14001Bundle\Entity\Mesurage")
*/
private $mesurage;
以下是我的表单生成代码:
class ActiviteType extends AbstractType {
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder
->add('typeActivite'),
->add('emplacement'),
->add('mesurage', 'entity', array('class' => 'ISO14001Bundle:Mesurage'));
}
}
这是我的表单代码:
<div class="well">
<form method="post" {{ form_enctype(form) }}>
{{ form_widget(form) }}
<br/> <input type="submit" value="Envoyer" class="btn btn-primary" />
</form>
<script src="{{ asset('js/jquery-2.1.1.min.js') }}"></script>
<script type="text/javascript">
$(document).ready(function()
{
var $container3 = $('div#gestionenvironnementale_iso14001bundle_activitetype_activiteMesurage');
var $lienAjout3 = $('<a href="#" id="ajout_mesurage" class="btn">Ajouter un mesurage</a>');
$container3.append($lienAjout3);
$lienAjout3.click(function(h) {
ajouterMesurage($container3);
h.preventDefault();
return false;
});
var index3 = $container3.find(':input').length;
if (index3 == 0) {
ajouterMesuragePolluant($container3);
} else {
$container3.children('div').each(function() {
ajouterLienSuppression3($(this));
});
}
function ajouterMesurage($container3) {
var $prototype3 = $($container3.attr('data-prototype').replace(/__name__label__/g, 'Mesurage n°' + (index3+1))
.replace(/__name__/g, index3));
ajouterLienSuppression3($prototype3);
$container3.append($prototype3);
index3++;
}
function ajouterLienSuppression3($prototype3) {
$lienSuppression3 = $('<a href="#" class="btn btn-danger">Supprimer</a>');
$prototype3.append($lienSuppression3);
$lienSuppression3.click(function(h) {
$prototype3.remove();
h.preventDefault();
return false;
});
}
});
代码工作得很好,但我不想显示Mesurage列表,我想显示Mesurage的形式添加新的!!
答案 0 :(得分:2)
如果您想要显示mesurage
的表单,则需要查看embed form
所以,基本上,您必须为FormType
创建一个mesurage
(称之为MesurageFormType
)并按如下方式修改ActiviteType
class ActiviteType extends AbstractType {
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder
->add('typeActivite'),
->add('emplacement'),
->add('mesurage', 'collection', array(
'type' => new MesurageFormType(),
'allow_add' => true,));
}
}
这应该没问题,但如果你想以不同的方式呈现你的表格,你应该使用prototype and jquery