Мне нужно сгенерировать URL, чтобы иметь возможность загружать некоторый контент в элемент HTML.

$('#editSchool').click(function () {
            var id = $(this).attr('data-id');

Проблема начинается здесь, когда я пытаюсь вставить значение id для параметра id

            $('#educationDialog').load("{{ path('_education_edit', {'id': id}) }}", function () {
                $('.closeDialog, #person_education_form_cancel').click(function () {
                    $('#addSchool').trigger('click');
                });
            });
        });

У вас есть какое-то решение, если это возможно?

1
Stevan Tosic 6 Янв 2017 в 14:12

3 ответа

Лучший ответ

Проблема была очень простой. Вместо передачи атрибута data-id может быть передан data-url.

<span id="editSchool" data-url="{{ path('_education_edit', {'id': id}) }}">  
     Edit School
</>

$('#editSchool').click(function () {
        var url = $(this).data('url');

        $('#educationDialog').load(url, function () {
            $('.closeDialog, #person_education_form_cancel').click(function () {
                $('#addSchool').trigger('click');
            });
        });
    });
1
Stevan Tosic 27 Мар 2018 в 08:20

Вы можете использовать FOSJSRouting bundle:

http://symfony.com/doc/current/bundles/FOSJsRoutingBundle/usage.html

С помощью этого пакета вы можете создавать маршруты в JavaScript

1
t-n-y 6 Янв 2017 в 11:14

Ветвь анализируется при визуализации страницы, поэтому переменная id в объявлении вашего маршрута устанавливается при загрузке страницы.

Самое простое решение - изменить маршрут так, чтобы он принимал параметр Nullable для идентификатора, а затем добавить идентификатор в маршрут в вашем JavaScript. Кроме того, для использования в JavaScript вам нужно будет использовать функцию ветки url, так как она дает абсолютный URL, а путь - относительный URL. Ссылка: В чем разница между URL-адресами и «путь» в symfony2.3

Пример routing.yml;

my_route:
    path:    /foo/bar/{id}
    defaults:   { _controller: AppBundle:Foo:bar, id: null }

Тогда в твоей ветке;

<script>
var url = '{{ url('my_route') }}'+'/';
var id = $(this).attr('data-id'); 
$('#educationDialog').load(url+id, function () {
    // ...
});
</srcipt>
1
Community 23 Май 2017 в 12:00