【发布时间】:2017-05-05 09:47:04
【问题描述】:
我有 3 个实体:(CV、DomaineCompetence 和 Competences) CV 可以有多个 DomaineCompetence,DomaineCompetence 可以有多个 Competence,每个实体都有一个 formType。
简历实体
class Cv
{
//...
/**
* @OneToMany(targetEntity="DomaineCompetenceCv", mappedBy="cv", cascade={"persist"})
*
*/
private $domainesCompetence;
领域能力实体
class DomaineCompetenceCv
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="nom", type="string", length=255)
*/
private $nom;
/**
* @ORM\ManyToOne(targetEntity="Cv", inversedBy="domainesCompetence")
* @ORM\JoinColumn(name="cv_id", referencedColumnName="id")
*/
private $cv;
/**
* @ORM\OneToMany(targetEntity="CompetenceCv", mappedBy="domaineCompetence", cascade={"persist"})
*
*/
private $competences;
CompetenceCv
class CompetenceCv
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="nom", type="string", length=255)
*/
private $nom;
/**
* @ORM\Column(name="niveau", type="integer")
*/
private $niveau;
/**
* @ORM\ManyToOne(targetEntity="DomaineCompetenceCv", inversedBy="competences")
* @ORM\JoinColumn(name="domaine_id", referencedColumnName="id")
*/
private $domaineCompetence;
CVForm
public function buildForm(FormBuilderInterface $builder, array $options)
{ $builder
//...
->add('domainesCompetence', CollectionType::class, array(
'entry_type' => DomaineCompetenceCvForm::class,
'allow_add' => true,
'by_reference' => false,
))
;
}
领域能力CvForm
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('nom')
->add('competences', CollectionType::class, array(
'entry_type' => CompetenceCvForm::class,
'allow_add' => true,
'by_reference' => true,
))
;
}
CompetencesCvForm
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('nom')->add('niveau') ;
}
用于 Cv 的树枝
<form role="form" action="" {{ form_enctype(form) }} method="POST">
{{ form_widget(form._token) }}
//...
<h4 class="no-margin-top has-divider text-highlight">Compétences</h4>
<div id="domaineCV" class="domaineCV" data-prototype="{{ form_widget(form.domainesCompetence.vars.prototype)|e('html_attr') }}">
{% for com in form.domainesCompetence %}
<div class="" data-prototype="{{ form_widget(com.vars.prototype)|e('html_attr') }}">
</div>
{% endfor %}
</div>
</form>
我使用javaScript添加了超过DomaineCompetence但问题是Competence的形式不显示
有人可以帮助我吗?谢谢大家。
<script type="text/javascript">
$(document).ready(function() {
var $container = $('div#domaineCV');
var $addLink = $('<a href="#" id="add_category" class="btn btn-default">Ajouter une Domaine de compétence</a>');
$container.append($addLink);
$addLink.click(function(e) {
addCategory($container);
e.preventDefault(); // évite qu'un # apparaisse dans l'URL
return false;
});
var index = $container.find(':input').length;
if (index == 0) {
addCategory($container);
} else {
$container.children('div').each(function() {
addDeleteLink($(this));
});
}
function addCategory($container) {
var $prototype = $($container.attr('data-prototype').replace(/__name__label__/g, 'Catégorie n°' + (index+1))
.replace(/__name__/g, index));
addDeleteLink($prototype);
$container.append($prototype);
index++;
}
function addDeleteLink($prototype) {
$deleteLink = $('<a href="#" class="btn btn-danger">Supprimer</a>');
$prototype.append($deleteLink);
$deleteLink.click(function(e) {
$prototype.remove();
e.preventDefault(); =
return false;
});
}
});
【问题讨论】:
标签: forms symfony symfony-2.8