我觉得我对Symfony 2如何解决这个问题感到有些困惑,现在我对如何保存这个集合很感兴趣。
我使用的是Symfony 2.7.10
我有一个表单,我已经复制了,所以有两种表单类型,第二种设置有一个集合,我可以用JQuery添加到表单中。
我的表格代码: - 这是我呈现的表格
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder
->add('input1', 'text', ['label' => 'xxxx:'])
->add('input2', 'text', ['label' => 'xxxx:'])
->add('inputcol', 'collection', [
'type' => new AddInputsType(),
'allow_add' => true,
'allow_delete' => true,
'prototype' => true,
'label' => false,
'mapped' => false
]);
}
这是inputcol
集合
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder
->add('input1', 'test', ['label' => 'Other1:'])
->add('input2', 'text', ['label' => 'Other2:']);
}
这是在我的模板中呈现的表单
{{ form_start(FormTest) }}
<span id="testMe" data-count="1" data-prototype="{{ form_widget(FormTest.inputcol.vars.prototype)|e }}">
{% for emailField in FormTest.inputcol %}
{{ form_errors(emailField) }}
{{ form_widget(emailField) }}
{% endfor %}
</span>
<span class="ContentHere"></span>
<div class="form-group">
<div id="addNew" class="btn">ADD</div>
</div>
{{ form_end(FormTest) }}
我认为该代码是从Symfony 2文档编码的。
这是我的JQuery代码
var testAJAX = function() {
$('#addNew').on('click', function() {
var GetDataCount = parseInt( $('#testMe').attr('data-count') );
var emailList = $('#testMe');
var newWidget = emailList.attr('data-prototype');
newWidget = newWidget.replace(/__name__/g, GetDataCount);
var newCount = GetDataCount + 1;
$('#testMe').attr('data-count', newCount);
var newLi = $('.ContentHere').append(newWidget);
});
};
testAJAX();
同样,我认为这也来自文档,但我已编辑以使用data-count
标记计算循环。我这样做主要是因为这个代码是使用Grunt Task运行的,它不喜欢Twig模板代码。
这一切似乎都没有任何问题,但是我知道有点混淆了如何使用我的实体保存这些数据。
这是我的控制器代码的外观,
public function AdminHomeAction(Request $MyRequest) {
$GetEn = new EntityHere();
$ActionURL = $this->generateUrl('dashboard');
$Form = $this->createForm(new AddTestType(), $GetEn, ['action' => $ActionURL])
->add('save', 'submit', ['label' => 'SAVE',
'attr' => ['class' => 'SaveButton'],
]);
$Form->handleRequest($MyRequest);
if ($Form->isValid()) {
$test = $MyRequest->get('xxxxx')['xxxxx'];
dump( $test );
dump( $_POST );
die();
}
return $this->render('Bundle:home.html.twig', ['FormTest' => $Form->createView()]);
}
现在我知道我的JQuery看起来工作正常(或者至少我认为它是)。它可以添加我想要的许多输入,我可以使用$_POST
和Symfony 2 Request
访问该数据。
但是当我尝试访问实体时,它总是空的?如何将发布数据中的数据绑定回实体?或者我做错了什么?
欢迎大家帮忙
感谢。
答案 0 :(得分:1)
但是当我尝试访问实体时,它总是空的?我如何能 将我的发布数据中的数据绑定回实体?还是我做完了 有什么不对吗?
当'mapped'=&gt; false然后请求中的值不与实体
绑定