2017-08-18 7 views
0

Vue.jsをSymfony 3に接続しようとしましたが、正しいルート設定を作成する方法がわかりません。 プロジェクトツリーは、以下のようになります。Symfony 3のルート+ FueのVueJSのindex.htmlは404に落ちる

Project root 
    - app/ 
    - Resources/ 
     - views/ 
     - default/ 
    - web/ 
    - assets/ 
    - static/ 
    index.html  // here Vue is included 

のSymfonyから、私はいくつかのREST APIを提供し、それへのルートは/ API /で始まります。 Vue SPAにはいくつかのルートがあります。 問題は、私がrouting.ymlに含まれていないVueルートのブラウザでF5キーを押すと、ブラウザはSymfonyから404エラーを返します。私はこのような経路でResourses /ビュー/デフォルト/小枝へのindex.htmlの内容を置くとき 一つ半の作業の決定は次のとおりです。

fallback_for_vue: 
    path: /{req} 
    defaults: { _controller: 'AppBundle:Default:index' } 
    requirements: 
     req: ".+" 

taken from another questionが、これは私が、必要なものを実際にはないIドン理由私のフロントエンドのプログラマがweb/フォルダ以外のどこかに行きたい 私は使うべきSymfony経路のどのような設定ですか?

答えて

0

Vue.jsアプリケーションを指すにはワイルドカードアドレスが必要です。そうでなければ、あなたがリロードしたときにSymfonyにリクエストを送信し、それを処理するための味方は分かりません。

vuejs_wildcard_route: 
    defaults: { _controller: AppBundle:YourController:yourAction } 
    path: /vuejsappbasepath/{whatever} 
    requirements: 
     whatever: .* 
    defaults: 
     whatever: null 

私はこの設定をreactjsアプリで使用しており、完全に動作しています。

YourControllerはyourActionを含むコントローラで、Vue.jsパネルでテンプレートを読み込むコントローラです。

+0

ありがとう、カルロス。私が望むのは、前にVueとWebpackによってレンダリングされたSymfony静的index.htmlによるレンダリングを避けることです。 routing.ymlのマジック設定を使って、web /フォルダからプレーンindex.htmlだけを返します。それは可能です、あなたはどう思いますか? – kusrabs

+0

symfonyが小枝をレンダリングせず、単純なインデックスhtmlを提供しないようにするには、どこかにあるファイルを読み込み、標準のResponseオブジェクト本体として設定してユーザに返信します。私はちょうど標準のjsスクリプトとしてロードされたhtmlとvue、jsアプリケーションで、小枝ファイルをレンダリングすることに対して何の利点も見ません。 – Carlos

関連する問題