コンポーネントスロットで表示/非表示
symfony1.0系にて。
module単位でHTMLの一部分の表示/非表示をコンポーネントスロットを使ってやろうとすると、
うまく動いてくれなくて困ってた。
やりたいことはこんな感じ
- layoutにてinclude_component_slot()
- moduleAでは表示
- moduleBでは非表示
- できるだけいろんなところに多くの設定を書きたくない
コンポーネントスロットの設定はview.ymlでやる。
設定できる箇所
- apps/myapp/config/view.yml
- apps/myapp/modules/moduleA/config/view.yml
- apps/myapp/modules/moduleB/config/view.yml
初期値ありでmoduleで空で上書き→NG
- apps/myapp/config/view.yml
default: components: hoge_block: [top, hoge]
- apps/myapp/modules/moduleA/view.yml
- なし
- apps/myapp/modules/moduleB/view.yml
all: components: hoge_block: []
空で上書きしてくれないので、
xxxSuccess: components: hoge_block: []
とすべてのアクション分書かないといけない。
初期値=空、表示するmoduleで設定→OK
- apps/myapp/config/view.yml
default: components: hoge_block: []
- apps/myapp/modules/moduleA/view.yml
all: components: hoge_block: [top, hoge]
- apps/myapp/modules/moduleB/view.yml
- なし