2015-04-17 2 views
1

Вот я был у меня:Интегрирование AngularJS в Symfony APP

  • успокоительной Symfony API, который я создал с несколькими пучками
  • переднюю AngularJS, что я имею в веб-хранилище

сейчас вот пример моего файла маршрутизации:

$routeProvider. 
    when('/liste-produits', { 
    templateUrl: '../templates/list-products.html', 
    controller: 'ProductListCtrl' 
    }). 
    otherwise({ 
    redirectTo: '/' 
    }); 

Тот факт, что я должен использовать "../". Потому что иначе он не будет работать в dev environmentnement (app_dev.php). И, конечно, к тому времени, когда я отправлю его в производство (app.php), мне не нужно будет добавлять это «../»

Вы понимаете мою проблему?

Поскольку я могу получить утилизацию из работы Symfony в файле маршрутизации.

Как я могу это решить?

+2

Если у вас есть каталог веб-сайтов/шаблонов, тогда проблем не будет. Если вы пытаетесь сохранить свои шаблоны за пределами веб-каталога, тогда да, вообще не весело. Поэтому не делайте этого для углового. – Cerad

+0

@Cerad Я уже помещаю все, что связано с angularJS (js и templates) в веб-каталоге, но это не работает. Когда я использую app_dev.php, я должен использовать ../ Как вам удалось работать с этим? – julestruong

+1

app_dev не должен иметь ничего общего с угловыми шаблонами. Ваш сервер должен быть настроен таким образом, чтобы, если файл существует в Интернете, файл доставляется. Только когда нет файла, который будет вызван app_dev.php. Какой веб-сервер вы используете? – Cerad

ответ

2

Там является подход, в котором можно определить глобальную переменную в файле базы веточку: Symfony 2:image paths in javascript file with assetic, которые вы можете в свою очередь, использовать, например AngularJS.

Существует также комплект, называемый FOSJsRoutingBundle, он сортирует маршруты к клиенту и, следовательно, javascript. Это может быть интересно для вас.

Однако есть еще один вариант; - Я лично использовал подход, опубликованный Рейном Баарсмой, с файлом twig , а затем кэшировал полученный javascript.

Довольно просто написать request listener, который отображает файл twig в файл javascript один раз в день или всякий раз, когда файл javascript удаляется. Я использовал тот же подход со стилями для проекта с ежедневными изменениями цветов. Если вы не кэшируете его, браузер пересматривает маршрут, возвращающий javascript на каждой странице, и повторно загружает файл javascript, что добавляет много накладных расходов.

+0

Прошу прощения, но что вы подразумеваете под «разоблачением маршрутов»? – julestruong

+0

Это сделает их доступными для javascript, поэтому вы можете генерировать URL-адреса для действий контроллера и так далее. Подобно тому, как функции twig '' 'asset''' и' '' path''' доступны в javascript. –

+1

Кажется, это именно то, что я хочу поблагодарить – julestruong

0

Вы можете просто создать Symfony Controller с представлением в файле js. Таким образом, вы можете использовать функции шаблона twig (или php) (например, функцию path() ветки), чтобы избежать каких-либо странных URL-адресов.

В контроллере:

public function routingAction(Request $request) { 
    $this->render('angular/routing.twig.js'); 
} 

И в вашей маршрутизации

$routeProvider. 
    when('/liste-produits', { 
    templateUrl: {{ path('product_list') }}, 
    controller: 'ProductListCtrl' 
    }). 
    otherwise({ 
    redirectTo: '/' 
    }); 
+0

Вы пробовали делать угловое развитие таким образом? Передача ваших файлов javascript через ветку вызывает гораздо больше проблем, чем может решить. Это похоже на избавление от блох, бросая кошку в огонь. – Cerad

+0

На этом я согласен с Cerad, попробовал это, но он не работал – julestruong

+0

Я боюсь сказать «нет». Развитие AngularJS, которое я делал, было с NodeJS. Symfony тоже очень хорошо работает, но я не думаю, что я бы использовал модуль угловой маршрутизации, а вместо этого систему маршрутизации Symfony. –

Смежные вопросы