1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Laravel3 Viewを上書きする

Last updated at Posted at 2015-02-18

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()で上書きできそう。
じゃあビューも上書きできたらコントローラー作る必要ないのでは?
通常版コントローラー更新→カスタマイズに変更箇所反映の作業がなくなるかも…
と淡い希望を抱く。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?