Laravel3の情報です
View:make()で作成しているビューを書き換えたい
結論
composer内でpathを書き換える
つまりビューのイベントを利用する。
routes.phpとか
View::composer('呼び出しているビュー', function ($view) {
$View=>path = View::make('書き換えたいビュー')->path
// どう作用するか不明だけどviewの名前も上書きした方がいいとは思う
// $View=>view = View::make('書き換えたいビュー')->view
});
($View = View::make('書き換えたいビュー')
じゃ)いかんのか?
いかんらしい。
$View = null
とかも効かない。強い。よくわからない。
本当にこれで大丈夫かはわからないけど、4とかではこーやってできすますよーとかあれば3用に改変できるかも…
でも一番良さそうなのはやっぱりView::name()
View::of()
でIoCっぽくすることかな?
###viewの中身
$viewの中身
Laravel\View Object (
[view] => ~
[data] => Array (
[errors] => Laravel\Messages Object (
[messages] => Array ( )
[format] => :message
)
)
[path] => /framework/application/view/~.blade.php )
$view->new = 'new'
とか設定すると$view->date['new']に入る模様
マジックメソッドとかの実装なのかな?
経緯(余談)
少しだけ通常版とは異なるカスタマイズをする必要が出たので今まで通り
- 上書き用バンドル作成
- バンドル内のRoute.phpでカスタマイズ箇所のルーティングを上書き
- カスタマイズ元を継承したモデル、コントローラーをカスタマイズ
- ビュー作成
としようとしたが、どうやらカスタマイズ箇所はモデルとビューのみで済みそう。
モデルはたまたまIoCを使っていたのでIoC::register()
で上書きできそう。
じゃあビューも上書きできたらコントローラー作る必要ないのでは?
通常版コントローラー更新→カスタマイズに変更箇所反映の作業がなくなるかも…
と淡い希望を抱く。