Генерируйте JavaScript с помощью Twig на Symfony 3.0, не вмешиваясь в {} в коде JavaScript.Php

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Генерируйте JavaScript с помощью Twig на Symfony 3.0, не вмешиваясь в {} в коде JavaScript.

Сообщение Anonymous »

Я пытаюсь создать способ получения URL-адресов каждого вызова AJAX с помощью функции пути Twig. Причина, по которой я это делаю, заключается в том, что я пытаюсь создать одностраничное приложение, используя Knockout MVVM и require.js, поэтому мне нужны вызовы Ajax и мне нужно, чтобы URL-адреса генерировались динамически.
Я делаю это так: создаю маршрут:

Код: Выделить всё

  /**
*@Route("/ajax.js",name="ajax_calls")
*/
public function ajax_calls(Request $request)
{
$response=$this->render('javascript/ajax_calls.js.twig');
$response->headers->set('Content-Type', 'application/javascript');

return $response;
}
И я загружаю конкретный шаблон (javascript/ajax_calls.js.twig):

Код: Выделить всё

/**
*Returns the urls of the calls we need
*/
define([],function($)
{

return {
/**
*Urls for the albums (aka image groups)
*/
'albums':{
'get':function()
{
return "{{path('user_groups')}}";
},
'add':function()
{
return "{{path('group_add')}}";
}
'delete':function()
{
return "{{path('group_delete')}}";
}
'edit':function()
{
return "{{path('group_update')}}";
}
},
/**
*Urls for the Images
*/
'images':{
'add':function(group_id)
{
return "{{path('add_images', group_id='^group_id^')}}".replace("^group_id^",group_id);
},
'delete':function()
{
return "{{path('delete_images')}}";
}
}
};
});
Я использую fefine, потому что хочу иметь возможность загрузки с помощью require.js, и, как вы можете видеть, я пытаюсь сгенерировать объект, который возвращает URL-адреса для определенной части одной страницы. приложение.
Но как-то онлайн:

Код: Выделить всё

    'albums':{
Существует конфликт, и я не знаю, как его избежать.
Конкретная ошибка, которую я получаю:

Код: Выделить всё

Arguments must be separated by a comma. Unexpected token "punctuation" of value ":" ("punctuation" expected with value ",") in main.js.twig at line 11.
Как это исправить или существует альтернативный способ получить URL-адреса как объект JavaScript (путем их динамической генерации)?
Примечание : Я также видел https://github.com/FriendsOfSymfony/FOS ... c/index.md, опубликованный в параметре URL-адреса Ajax с использованием Twig. path
Но это не помогает мне понять, как я разработал приложение (я использую модели представлений и хочу, чтобы модели представлений были максимально понятны из URL-адресов и загружались извне).< /p>
Также я буду благодарен за альтернативный способ сделать это.

Редактировать 1:Я пробовал:

Код: Выделить всё

/**
*Returns the urls of the calls we need
*/
define([],function($)
{

return {
/**
*Urls for the albums (aka image groups)
*/
'albums': {% verbatim %} { {% endverbatim %}
'get':function()
{% verbatim %}   { {% endverbatim %}
return "{{path('user_groups')}}";
},
'add':function()
{% verbatim %} { {% endverbatim %}
return "{{path('group_add')}}";
}
'delete':function()
{% verbatim %} { {% endverbatim %}
return "{{path('group_delete')}}";
}
'edit':function()
{% verbatim %} { {% endverbatim %}
return "{{path('group_update')}}";
}
},
/**
*Urls for the Images
*/
'images': {% verbatim %} { {% endverbatim %}
'add':function(group_id)
{% verbatim %} { {% endverbatim %}
return "{{path('add_images', group_id='^group_id^')}}".replace("^group_id^",group_id);
},
'delete':function()
{% verbatim %} { {% endverbatim %}
return "{{path('delete_images')}}";
}
}
};
});
И возвращает ошибку:

Код: Выделить всё

Arguments must be separated by a comma. Unexpected token "punctuation" of value ":" ("punctuation" expected with value ",") in main.js.twig at line 11.
Edit2:
Я также получаю ту же ошибку с:

Код: Выделить всё

{% verbatim %}
/**
*Returns the urls of the calls we need
*/
define([],function($)
{

return {
/**
*Urls for the albums (aka image groups)
*/
'albums':{
{% endverbatim %}
'get':function()
{
return "{{path('user_groups')}}";
},
'add':function()
{
return "{{path('group_add')}}";
}
'delete':function()
{
return "{{path('group_delete')}}";
}
'edit':function()
{
return "{{path('group_update')}}";
}
{% verbatim %}
},
/**
*Urls for the Images
*/
'images':{
{% endverbatim %}
'add':function(group_id)
{
return "{{path('add_images', group_id='^group_id^')}}".replace("^group_id^",group_id);
},
'delete':function()
{
return "{{path('delete_images')}}";
}
{% verbatim %}
}
};
});
{% endverbatim %}
Изменить 3:
Я понял, что генерирую еще один файл JavaScript. Контроллер генерирует его с помощью main.js.twig:

Код: Выделить всё

requirejs.config({
baseUrl:'{{asset('')}}',
paths:{
'text':'assets/vendor/js/text.min',

'knockout':["https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.0/knockout-min",'assets/vendor/js/knockout.min'],
'pager':"{{asset('assets/vendor/js/pager.min')}}",
'jquery':"{{asset('assets/vendor/js/jquery.min')}}",
'boostrap':"{{asset('assets/vendor/js/bootstrap.min')}}",

'ajax':"{{path('ajax_calls')|replace('.js':'')}}",

{% block Viewmodels %}
{% endblock %}

'compMessage':'assets/js/components/message',
'extBooleanToggle':'assets/js/extenders/booleanToggle',
},
shim:{
'pager':['knockout'],
'bootstrap':['jquery'],
},
waitSeconds: 200,
});

{% block initFunction %}
{% endblock %}
И проблема, которая возникает, — это строка:

Код: Выделить всё

'ajax':"{{path('ajax_calls')|replace('.js':'')}}",
В этой строке я пытаюсь создать «поддельный» файл .js без .js, чтобы заставить .js загрузить его с расширением .js.

Подробнее здесь: https://stackoverflow.com/questions/361 ... th-in-java
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • PropertyChanged.fody, вмешиваясь в доступ постшарпа к информации отладки
    Anonymous » » в форуме C#
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • PropertyChanged.fody, вмешиваясь в доступ постшарпа к информации отладки
    Anonymous » » в форуме C#
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • PropertyChanged.fody, вмешиваясь в доступ постшарпа к информации отладки
    Anonymous » » в форуме C#
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • Токен CSRF, вмешиваясь в TDD - есть ли переменная, которая хранит выход CSRF?
    Anonymous » » в форуме Python
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • Результат метода Symfony в шаблоне Twig
    Anonymous » » в форуме Php
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Php»