Я пытаюсь внедрить динамические входы в форму сонаты. Когда пользователь выбирает категорию, я хотел бы изменить другой список значений.
Итак, я создал новый контроллер, настроил новый маршрут и создал новую модель ветки.
Сейчас у меня есть это:
class MyController extends CRUDController
{
public function listAction(Request $request)
{
$em = $this->getDoctrine()->getManager();
$transitRepository = $em->getRepository("AppBundle:Transit");
$transits = $transitRepository->findTransitWithType($request->query->get("type"));
return $this->render("transits.html.twig", array("transits" => $transits));
}
Моя веточкамодель:
{% extends '@SonataAdmin/standard_layout.html.twig' %}
{% block itineraire_widget %}
<div class="form-group">
{{ form_start(form, { 'id': id } ) }}
{{ form_errors(form) }}
{{ form_label (form.type, "Type") }}
{{ form_widget(form.type, {'attr' : {'class' : 'typeclass-' ~ id ~ ' span3'}}) }}
{{ form_errors(form.type) }}
{{ form_label (form.transit, "Transit") }}
{{ form_widget(form.transit, {'attr' : {'class' : 'transitclass-' ~ id ~ ' span3'}}) }}
{{ form_errors(form.transit) }}
{{ form_end(form) }}
</div>
{% block javascripts %}
<script>
$(document).ready(function () {
$(".typeclass-{{id}}").change(function () {
$.ajax({
url: "{{ path('transit_list') }}",
data: {
'type': $(this).val()
},
method: 'GET',
success: function (html) {
var transitSelector = $(".transitclass-{{id}}");
transitSelector.empty();
transitSelector.append(html);
},
error: function (data) {
console.log("An error ocurred while loading data ...");
}
});
});
});
</script>
{% endblock %}
{% endblock %}
Я добавил службу в файл service.yml:
app.admin.transit.mouv:
class: AppBundle\Admin\Transit_mouvAdmin
arguments:
- ~
- AppBundle\Entity\Transit_mouv
- AppBundle\Controller\MyController
tags:
- { name: sonata.admin, manager_type: orm, group: admin, label: Transit_mouv }
А затем добавил маршрут к route.yml:
transit_list:
resource:
path: /get-transits-from-type
defaults: { _controller: "AppBundle:TransitMouv:listTransitByType" }
methods: GET
Но у меня проблема с Sonata, когда я хочу загрузить список, в зависимости от атрибута type у меня появляется ошибка:
Для контроллера AppBundle\Controller\TransitMouvController
не определено *1021* и текущий маршрут transit_list
Возможно, мне что-то не хватает с администратором Sonata ..
Любая помощь приветствуется.