我使用 symfony2,现在我尝试将在标签 texttext Jquery 插件的 texarea 输入中创建的标签保存在实体中或直接保存在数据库中。我不知道保持值的好方法(注意将来我想使用带有插件建议功能的过滤器)。
我认为这种方法:
使用 jquery 选择器获取插件创建的隐藏输入中的输入值(在我的情况下
axxon_musicbundle_oeuvretype[tagz]
为:),因此:tagz =$('input[name*="axxon_musicbundle_oeuvretype[tagz]"]').val(); 例如:=["test","test2","test3"];
通过 AJAX 向控制器发送值,使用
$('#form').submit(function()
{在控制器中将值(例如:)转换
["test","test2","test3"]
为数组。证实。
发送到数据库。
这是我想要保存值的我的全部映射实体的摘录。
/**
* @ORM\ManyToMany(targetEntity="tagz",cascade={"persist"})
* @ORM\JoinTable(name="oeuvre_tagz",
* joinColumns={@ORM\JoinColumn(name="oeuvre_id", referencedColumnName="id", nullable=false)},
* inverseJoinColumns={@ORM\JoinColumn(name="tagz_id", referencedColumnName="id", nullable=false)})
**/
private $tagz;
在我的表单类型中:
public function buildForm(FormBuilderInterface $builder, array $options)
{
switch ($options['flowStep']) {
...
case 5:
$builder->add('tagz', 'textarea', array(
'mapped' => false,
'required'=>false,
));
break;
我的观点是,我使用多步表单,craue bundle:
{% if flow.getCurrentStep() == 5 %}
<script type="text/javascript">
$().ready(function () {
$('#axxon_musicbundle_oeuvretype_tagz').textext({ plugins: 'tags' });
$('#form').submit(function() {
$('form').get(0).setAttribute('action', '{{ path("axxon_music_ExtractFormTagz") }}');
var tagz = Array;
tagz =$('input[name*="axxon_musicbundle_oeuvretype[tagz]"]').val();
var actionController =$("#form").attr("action");
$.ajax({
type: 'POST',
data: {'tagz': tagz},
url: actionController,
success: function () {
$('form').get(0).setAttribute('action', '{{ path("axxon_music_add_oeuvre") }}');
... is this a good choice to do like that ?
});
});
</script>
<fieldset>
<legend>Etape {{ flow.getCurrentStep() }} / {{ flow.getMaxSteps() }}, Ajouter des mots clefs descriptifs
</legend>
<ul>
<li>
{{ form_row(form.tagz) }}
</li>
</ul>
{% include 'CraueFormFlowBundle:FormFlow:buttons.html.twig' %}
</fieldset>
{% endif %}
我想要接收数据的控制器:
public function ExtractFormTagzAction(){
if ($this->getRequest()->isXmlHttpRequest()) {
$tagz = $this->getRequest()->request->get('tagz');
}
非常感谢。