ブルーシュ

IT技術の勉強記録

ホーム > Tips > Magento

magentoで、子ブロックから変数を受け取りたいとき

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が表示されます。

magentoで、子ブロックから変数を受け取りたいとき #Magento #ウェブデザイン #ウェブ制作 #WEBデザイン #WEB制作

作者の似顔絵

秋田市在住のプログラマーです。
プログラミングを始めて18年、まだまだ日々勉強。調べたことをブログにまとめていきます。
記事の感想・質問・間違い指摘などはツイッター ( @blooshcompany ) へお願いします。