回答:
これを行うにはいくつかの方法があります。
ブロックに直接割り当てる:
$block->assign($var);
または
$block->assign(array('myvar'=>'value','anothervar'=>true));
次に、phtmlファイルで次のようにアクセスできます。
$this->myvar
Mageレジストリを使用します。
Mage::register('custom_var', $var);
そして次のように使用します:
$var = Mage::registry('custom_var');
$this->myvar
たテンプレートファイル内から
Mage::register($key, $value, ...)
。だからMage::register('custom_var', $var)
?
$block->assign('myvar',$var);
ですよね?
Mage::register('custom_var', $var);
セッションで値を書き込みますが、これは現在のアクションテンプレート以外の他のテンプレートファイルからもアクセスできますか?
phtmlはブロックでレンダリングする必要があります。ブロックのレイアウトに名前が必要です。
あなたは電話した後にこれを行うことができます$this->loadLayout();
$block = Mage::app()->getLayout()->getBlock('block_name_here')
if ($block){//check if block actually exists
$block->setSomething($something);
}
次に、phtml
ファイル内の値を取得できます
$value = $this->getSomething();
//or
$value = $this->getData('something');
あなたが人々が逃した場合に備えて、これを達成するもう一つの方法があります
セッションを使用する
Mage::getSingleton('core/session')->setSomeSessionVar($data);// In the Controller
$data = Mage::getSingleton('core/session')->getSomeSessionVar(); // In the View;
$block->setSomething()
またはを使用することをお勧めします$block->assign()
。これは「コードが多すぎる」ように感じられるため、できるだけ多くのPHPを避ける必要があります。
ブロックコントローラー内にいる場合。
class module_namespace_Block_example extends Mage_Core_Block_Template
{
protected $_var;
public function __construct(){
$this->_var = "something";
}
}
次に、.phtmlファイルで
<?php
$variable = $this->_var;
echo $variable; // prints "something"
?>
<h1>You're inside your phtml file...... <?php echo $variable; //prints "something" ?></h1>
controllers
、モジュールのディレクトリで見つかったコントローラーアクションに関するものでした。
これは、コントローラーからphtmlファイルにデータを送信するのが非常に簡単です。
Step1:-最初にModelクラスを作成し、Varien_Objectから拡張します
class Namespace_Modulename_Model_Modelfilename extends Varien_Object
{
}
step2:-contollerfileを開き、関数にコードを配置します。
$name='gaurav';
$this->loadLayout();
Mage::getSingleton('Modulename/Modelfilename')->setData('name',$name);
$this->renderLayout();
Step3:-phtmlファイルを開き、コードを配置します。
echo $name=Mage::getSingleton('Modulename/Modelfilename')->getData('name');
出力:-'gaurav';
$block->assign($var)
が、どのようにphtml
ファイルに取得されますか?