Я несколько дней пытался реализовать редактируемый выбор, который получает идентификатор выбранного объекта в списке.Проблема возникает, когда я добавляю jQuery, чтобы сделать это поле выбора редактируемым:
<script>
$(document).ready(function()
{
$('.form-companyName').editableSelect();
});
</script>
До этого, поскольку я использовал Symfony 3, у меня не было никаких проблем.У меня был свой EntityType в FormType с 'choice_label' => 'companyName'
, поэтому selectbox всегда получал идентификатор выбранного объекта.
Теперь, с помощью этой функции javascript, selectbox просто получает текст выбранного объекта,но не идентификатор.И, конечно, форма возвращает эту ошибку («это значение недействительно»):
Выбор «Salinas SL» не существует или не является уникальным
Я попытался получить идентификатор, выполнив следующее (он просто получает текст):
'choice_label' => 'companyName'
'choice_value' => 'id'
или записав обратное:
'choice_label' => 'id'
'choice_value' => 'companyName'
Но тогда, по мнению, я простосм. id
, а не Name
Компании.
Здесь вы можете увидеть некоторую часть моего кода:
FormType
->add('companyName', EntityType::class, array(
'label' => 'Cliente',
'mapped' => false,
'required' => false,
'class' => 'BackendBundle:Company',
'choice_label' => 'companyName',
'choice_value' => 'id'
'attr' => array(
'class' => 'form-compName form-control',
'data-effects' => 'slide'
)
))
new_project.twig.hmtl
{{form_start(form, {'action':'', 'method':'POST'})}}
<div class="form-group">
{{ form_label(form.companyName) }}
<div id="widget-companyName" class="{% if not form.companyName.vars.valid %}has-error{% endif %}">
{{ form_widget(form.companyName, { 'attr': {'autocomplete':'off'} }) }}
</div>
<div id="err-companyName" class="message-error">
{{ form_errors(form.companyName) }}
</div>
</div>
<div>
{{ form_widget(form.save) }}
</div>
{{form_end(form)}}
Я также пытался добавить это в веточку:
{% for key,val in form.companyName.vars.choices %}
{{ form_widget(form.companyName, {'value': val.value, 'attr': {'autocomplete':'off'} }) }}
{% endfor %}
Имея:
'choice_label' => 'companyName'
'choice_value' => 'id'
Но затем поле выбора все равно получает текст столбца CompanyName
(не идентификатор) и просто показывает первый элемент из списка, без дополнительных параметров.