我正在尝试将动态输入实现为奏鸣曲形式。当用户选择类别时,我想更改其他值列表。
所以我创建了一个新的控制器,配置了一个新的路由,并创建了一个新的树枝模型。
现在,我有这个:
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属性,我有一个错误:
没有为控制器
_sonata_admin
和当前路径AppBundle\Controller\TransitMouvController
定义transit_list
我可能很想念Sonata管理员。。
感谢任何帮助。
我正在尝试将动态输入实现为奏鸣曲形式。当用户选择类别时,我想更改其他值列表。所以我创建了一个新的Controller,配置了一个新的路由,然后... ...>
我还试图在我的管理类中添加configureRoute函数(而不是在routing.yml文件中配置路由):
protected function configureRoutes(RouteCollection $collection)
{
parent::configureRoutes($collection);
$collection->add('transit_list', 'transitList');
}