Я работаю с symfony2, и теперь я пытаюсь сохранить в сущности или непосредственно в базе данных теги, созданные на вкладке texarea плагина Jquery tag textext. Я не знаю, какой способ сохранить значения (отметили, что в будущем я хочу использовать функцию Filter with Suggestions плагина).Теги Textext Jquery plugin, хороший способ сохранить созданные теги с symfony 2?
Я думаю, что к этому методу:
Возьмите входные значения в скрытом вход, созданный плагин (в моем случае:
axxon_musicbundle_oeuvretype[tagz]
), с селектором Jquery, так:tagz = $ ('input [name * = "axxon_musicbundle_oeuvretype [tagz]"]'). val(); ex: = ["test", "test2", "test3"];
посыла значения в контроллер через AJAX, с
$('#form').submit(function()
{в контроллере преобразования значений (например:
["test","test2","test3"]
) в массив.подтвердите.
отправить в базу данных.
Здесь выдержка из моего объекта сопоставления oeuvre, где я хочу сохранить значение.
/**
* @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;
В моей formtype:
public function buildForm(FormBuilderInterface $builder, array $options)
{
switch ($options['flowStep']) {
...
case 5:
$builder->add('tagz', 'textarea', array(
'mapped' => false,
'required'=>false,
));
break;
мой взгляд, я использую многоступенчатую форму, craue расслоение:
{% 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');
}
Большое спасибо.
Большое спасибо, кажется, умный, я попробую этот метод завтра и отвечу вам после. –
Это похоже на работу! Я использую addViewTransformer() в функции buildForm моего типа tagformtype. Теперь вместо отправки моего объекта с помощью трансформатора в сеттер, я ищу для отправки через add (arraycollection), идею? –
У вас должны быть getTagz() и setTagz() в вашей организации – Zeljko