2016-09-17 31 views
12

最新のangle-cliを使用して、私は新しいプロジェクトを作成しました。次に、それをLaravel 5.3に統合しようとしました。私はこのプロジェクトをsystemjsで作業していますが、webpackに切り替えて、angle-cliを利用したいと思います。角度2 +角度 - cli +角度@ 5.3

問題があるのは、angular-cli.jsonでは、インデックスがindex.phpであることを指定できないため、HTMLのみを受け入れることです。

基本的に、この設定でAngularアプリケーションを開始することはできません。

どうすればこの問題を解決できますか?

+4

でそれを使用する私はangula2、角度-CLIおよびlaravel 5.3で働いているが、私はそれらを離れて保つ、私はlaravelでAPIを構築し、angular2でそれを消費それはうまくいくのですが、なぜあなたは同じアプローチを使用しませんか? –

+0

@CristianSepulveda入力していただきありがとうございます。 –

+0

@CristianSepulvedaはstrutured用のURLデモをご提供できますが、私はこれも必要ですが、laravelは角度4をインストールします。 – sunil

答えて

8

最後に、Cristian Sepulvedaがコメントに書いたように、私はLaravelとAngular 2を分離しました。これはとにかく推奨されるアプローチです。

私はLaravelでAPIを作ると角2

+1

LaravelでAPIを使用するにはどうすれば使用できますか? – huykon225

0

私は同じ問題を抱えていたし、私が見つけたこのrelated issue in their GitHub issuesです:

出力フォルダは、常に完全に置き換えられます。 public /フォルダを使用してindex.phpを出力フォルダにコピーするか、別のフォルダに出力してファイルを自分でコピーすることができます。

これは仕様です。変更されることはありません。これは、ビルド出力フォルダであり、deployフォルダではありません。これらの2つのステップを分ける必要があります。

あなたが本当に望むものを実際に達成することはできませんが、これが私が見つけた唯一の回避策です。

3

私の場合、私はlaravelから角度アプリを提供しています。私はまだwebpackを使って資産を構築していますが、index.htmlをindex.blade.phpにコピーしてlaravelアプリケーションを提供するgulpタスクを持っています。 また、gulpを使って/ distから/ public /にコピーしたファイルをコピーします。

0

私には1つの解決策しか見つかりませんでした。

  1. ゴクゴクのコピーを使用してng build --prod
  2. することにより、クライアント側のコード用にビルド作成するには、コピーした一気-ingectプラグインジェクトを使用してLaravel公共DIR gulp copy(ここではあなたがそれらを削除存在する古いビルドファイルかどうかを確認することができます)
  3. にファイルを生成しましたファイルをレイアウトに入れる

- これはCIで使用し、自動化ツールで行うことができます。結果として、私たちはinline.jsと3つの*。**。bundle.jsファイルを注入しました。同じメインレイアウトでは、<base href="/example">(ここではルートルートのLaravelルートで定義されたものを使用できます)とこのパスからロードされたテンプレートファイル(私の場合は 'example.blade.php')に角度2のルート要素を追加します<st-example>Loading...</st-example>

- この設定では、ルート2のルートurl hrefとビルドからのスクリプトファイルの挿入が必要なルートLaravelレイアウトがあります。現在のルートのテンプレートファイルにはルート要素が含まれています(これは単純なブレードのyeild( 'content')によるメインレイアウトに含まれています)。

P.S.アンラーヴ2でいくつかのHTTPリクエストを使用している場合は、Laravelプロジェクトに統合した後、csrf保護ミドルウェアを各リクエストに追加することに気付く必要があります。 。

0

index.phpを指定することはできませんので、単にindex.htmlと指定してください。 そして、適切なルートをLaravelルーティングに追加してください。このように、例えば:

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

はところで、それは単に未知のルートのための罠だ...しかし、私はあなたのアイデアを得ると思います。