Bloosh Company

記事のサムネイル画像です。

2020年4月15日

Development>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で、子ブロックから変数を受け取りたいとき | ブルーシュカンパニー

<<次の記事

プラグインなしでWordPressのURLから.htmlを取り除く方法!

前の記事>>

magentoのcollection系の小技!