Как совместить Laravel и Angular?

Вопрос, наверное глупый, как совмещать angular и blade от laravel?
То есть и там и там используются фигурные скобки. И не будет ли ошибок синтаксиса?
Если не трудно, буду рад ссылкам на github, где используются эти фреймворки вместе.
И надо ли писать api, чтобы angular получал данные, или можно как то по другому передавать данные?
  • Вопрос задан
  • 7536 просмотров
Решения вопроса 4
JhaoDa
@JhaoDa
LaravelRUS Team
laravel.com/docs/5.1/blade#displaying-data, подраздел «Blade & JavaScript Frameworks».
Ответ написан
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
ответ - не пихать ангуляровские темплейты в blade, если вам надо каким-то образом передавать данные - то самый простой способ делать это так:

angular.module('app.prefetchedData', []).constant('prefetchedData', {
    // some serialized data from laravel
});


все остальное - вынести в отдельные файлики или бандлить штуками типа webpack.

Еще относительно правильный способ - экранирование (в blade же есть raw или что-то подобное как в twig?)

Ну и третий вариант, сродни кастылю и вам должно быть слегка стыдно за его использование - в $compileProvider есть возможность установить как именно обозначается биндинг значений в angular.
Ответ написан
Комментировать
dedalik
@dedalik
Веб разработчик
Чтобы избавиться от фигурных скобок, нужно прописать в rotes.php следующее:
// Using different syntax for Blade to avoid conflicts with AngularJS.
// You are well-advised to go without any Blade at all.
Blade::setContentTags('<%', '%>'); // For variables and all things Blade.
Blade::setEscapedContentTags('<%%', '%%>'); // For escaped data.


Если хотите начать на Laravel 5 и Angular 1.13, вот хорошо сделанный пример https://github.com/Zemke/starter-laravel-angular, сам проверял код работает, есть авторизация и Todo пример
Ответ написан
Vadiok
@Vadiok
Веб разработчик
Я для шаблонов, которые подгружаются через роутинг Angular'а использую просто php вьюхи, без Blade.
По данным для Angular - я передаю через апи, только в роуте у меня идет запрос на /data/что-то-там, а не /api/что-то-там. Пример куска роутинга в Laravel:
// Данные для Angular
Route::group(['prefix' => 'data'], function() {
	// Пользователи
	Route::group(['prefix' => 'user'], function() {
		Route::get('current', 'UserController@getCurrent');
		Route::get('settings', 'UserController@getSettings');
		Route::post('settings', 'UserController@saveSettings');
	});
	// ...
});

В таком случае в контроллерах очень удобно просто возвращать объект модели, Laravel сам его отдаст в виде JSON.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы