2013-07-09 28 views
5

私はカスタムCMSを作成したいと思いますが、私はshowProfile()関数を持つコントローラを持つユーザーパッケージを作成したいと思います。しかし、問題は、このプロファイルビューを簡単に編集したいということです。だから私はカスケードビューを作成する方法があるかどうかを知りたい。 app/views/vendor/vendor/package/src/viewsにファイルがない場合と同様にロードされます。Laravel 4パッケージの表示をオーバーライド

私はそれを動作させるために管理:私はあなたがこのアイデア:)

EDITを得たいと考えています。私はServiceProviderでビューの新しい名前空間を登録しなければなりませんでした。 私はのServiceProviderにこのコードを置く:

zaalbarxx/cmscoreは、ベンダー/パッケージとcmscoreは、私が見るように、コントローラに後で使用することができ、名前空間である
\View::addNamespace('cmscore',array(app_path()./'views/packages/zaalbarxx/cmscore'); 

を::(「cmscore ::インデックス」)します。私はこのコードをboot()メソッドの$ this-> package()より前に追加しました。このようにapp/viewsはpackage/viewsよりも優先されます。素晴らしい作品。

+0

olution – fideloper

答えて

4

既に可能ですが、構造はvendor/package-name/src/viewsにデフォルトで表示されますが、選択されるのはapp/views/packages/package-name/に相当する場合です。

2

前述のように、既にパッケージビューを読み込むことができるはずです。

ただし、app/config/view.phpにある配列のビューの位置を追加できます。

FileViewFinderクラスのaddLocation()メソッドを使用して、実行時にビューパスを追加することもできます。あなたはどのように見るのを助けるかもしれない

また
App::make('view.finder')->addLocation('/path/to/views'); 

は、私が最近this question on cacheing view outputに答え、注意してください、:あなたのアプリで

$app['view.finder']->addLocation('/path/to/views'); 

それともどこか:サービスプロバイダーに次のようになり、そのメソッドを使用して

そのルートを下ることを選択した場合、Viewパッケージの一部を拡張することができます。

デフォルトで

パッケージが最初になります

+0

この場所は 'Illuminate \ Support \ ServiceProvider :: package()'からハードコードされているので、パッケージビューは 'app/views'にカスケードすることができます。 – crynobone

+0

はい、特定のパッケージからのビューの読み込みに問題はありません。しかし、私はパッケージで単純なビューを作成し、それをapp/viewsに移動して拡張できるようにしたいと考えています。または、私はちょうどパッケージでビューを作成し、このプロファイル()コントローラメソッドを使用するためにapp/viewsでファイルを作成するようにユーザーを強制してはいけませんか? –

0

あなたはlaravelコードを読めば、あなたがこの中に内蔵されていることがわかります、でこの動作をプログラムする必要はありません...と app/views/packages/package-name/(すべて小文字で!パッケージや作者が帽子を持っていても、ウィンドウに気づかれずに、そしてLinux上で壁に頭を浮かべるでしょう!)

そして、顧客のアプリケーションビューが存在しなければ、パッケージビューはパッケージ自体から読み込まれます内部: vendor/author/package-name/src/views

+2

カスタムパスは '... packages/package-name ...'ではなく '... packages/vendor/package-name ...'(** vendor **の部分に注意してください)に注意してください。'php artisan view:publish vendor/package'コマンドを使ってパッケージビューを変更して公開することができます。ドキュメント:http://laravel.com/docs/4.1/packages#package-views –

+0

もう一つのgotcha: 'view:publish'コマンドは、タイトルケースでフォルダを作成することがあります。 'app/views/packages/Vendor/Package'です。しかし、それはサーバによって拾われないかもしれませんし、フォルダの名前を '.../vendor/package'に変更する必要があるかもしれません。 –

関連する問題