magentoで、子ブロックから変数を受け取りたいとき。
たとえば、商品リストページでフィルター選択されているときに、その値をcatalog/layer/view.phtmlで取得したい場合。(catalog/product/view.phtmlじゃないよ。)
本来ならばstate.phtmlでしか取得できませんが、view.phtmlでその値を取得するには2通りの方法があります。
①ポストデータを取得する
$post_data = $this->getRequest()->getParams(); する方法です。たとえば、URLの後ろにくっついている ?hoge-data=fugafuga&piyo-data=chun というポストデータを、
array("hoge-data" => "fugafuga",
"piyo-data" => "chun");
このように取得できます。手軽だけど、余計な情報まで取得してしまう。
②子ブロックから取得する
親ブロックから見て、ひっぱってきたいデータを子ブロックが取得してることが条件です。view.phtmlでは、state.phtmlに対して$this->getStateHtml();しているので、有効です。
まず、state.phtml側で送りたいデータをセットします。
<?php $this->getParentBlock()->setData('hoge-data', 'fugafuga'); ?>
親ブロックである、view.phtmlではこのように受け取ります。
<?php echo $this->getData("hoge-data");?>
これで、view.phtmlでfugafugaが表示されます。