2016-09-17 2 views
12

Используя новейшие угловые cli, я создал новый проект, и все работает отлично. Затем я попытался интегрировать его в Laravel 5.3. У меня этот проект работает с systemjs, но я хочу переключиться на webpack и воспользоваться угловым cli.Угловой 2 + угловой-cli + Laravel 5.3

Проблема в том, что в angular-cli.json я не могу указать, что индекс равен index.php, он принимает только HTML.

В принципе, я не могу запустить Угловое приложение вообще с этой настройкой.

Как я могу это преодолеть?

+4

Я работаю с angula2, угловой-кли и Laravel 5.3, но я держать их друг от друга, я строю API с Laravel и потребляют его с angular2 и это хорошо работает, почему вы не используете тот же подход? –

+0

@CristianSepulveda Спасибо за вход (y) –

+0

@CristianSepulveda может у вас просьба предоставить любую демо-версию для strutured u, используя, я также хочу это, но с laravel хочу установить угловой 4 – sunil

ответ

8

В конце концов я разделил Laravel и Angular 2, как писал в комментарии Кристиан Сепульведа. В любом случае, это рекомендуемый подход.

Я делаю API с Laravel и использовать его с угловыми 2.

+1

Как я могу сделать API в Laravel, чтобы использовать его ? – huykon225

0

У меня была такая же проблема, и что я нашел это related issue in their GitHub issues:

Папка вывода всегда будет полностью заменен. Вы можете использовать общедоступную/папку, чтобы иметь индекс index.php, который будет скопирован в вашу выходную папку, или вывести приложение в отдельную папку и скопировать файлы самостоятельно.

Это по дизайну и не изменится. Это папка вывода сборки, а не папка развертывания. Вы должны отделить эти два шага.

Таким образом, вы не можете достичь того, чего вы точно хотите, но это единственный обходной путь, который я нашел.

3

В моем случае я обслуживаю угловое приложение от laravel. Я все еще использую webpack для создания своих активов, но у меня есть задача gulp, которая копирует угловой index.html как index.blade.php, которым служит приложение laravel. Я также использую gulp для копирования встроенных файлов из/dist в/public

0

Я нашел только одно решение для меня.

  1. создать построить для клиента на стороне кода, ng build --prod
  2. Использование глотком копии генерироваться файлы в Laravel общественной директории gulp copy (здесь вы можете проверить, если старые файлы сборки существует удалить их)
  3. Использование Глоток-ingect плагин инъецировать скопированный файлы в макете gulp inject

- Это может быть использовано в CI и сделано с инструментами автоматизации. В результате мы имеем inline.js и три *. **. Файла bundle.js. В том же главном макете я статически добавляю <base href="/example"> (вы можете использовать любые определенные в корневом пути пути Laravel здесь) и внутри файла шаблона, загруженного с этого пути (в моем случае «example.blade.php») добавить угловой 2 корневой элемент <st-example>Loading...</st-example>

- С помощью этой настройки у вас есть корневая маска Laravel, внутри которой требуется угловой 2 root url href и вставляемые файлы скриптов из сборки. И ваш файл шаблона для текущего маршрута содержит корневой элемент внутри (он включен в основной макет простым клиентом yeild («content»)).

P.S. также вы должны заметить, что если вы используете некоторые HTTP-запросы в угловом 2, после того, как вы интегрируете его в проект Laravel, это добавит промежуточное ПО защиты csrf к каждому запросу ... И если у вас есть некоторые новые ошибки в запросах, которые работают ранее, просто проверяйте заголовки ,

0

С углового-кли не позволяет указать index.php, пусть это будет просто указать index.html то там ... и добавить соответствующий маршрут в маршрутизацию Laravel.Как этот, например:

Route::any('{path?}', function() { 
    return File::get(public_path() . '/index.html'); 
})->where("path", ".+"); 

Btw, это просто ловушка для любых неизвестных маршрутов ... Но я думаю, вы получите идею.