コントローラーからPHTMLにデータを送信します
-
16-10-2019 - |
質問
私はこのコントローラーを持っています:
...
public function insertAction() {
$something = 'testcase';
$this->loadLayout();
$this->_title($this->__("the title"));
$this->renderLayout();
}
...
アクセスしたいです $something
私の.phtmlドキュメントで、これを行うにはどうすればよいですか? (または別の方法でそれを置くために:どうすればアクセスできますか $something
私の.phtmlファイルで)
解決
これを行うにはいくつかの方法があります。
ブロックに直接割り当てます:
$block->assign($var);
また
$block->assign(array('myvar'=>'value','anothervar'=>true));
次に、次のようにPHTMLファイルにアクセスできます。
$this->myvar
Mage Registryを使用してください。
Mage::register('custom_var', $var);
そして、次のように使用します。
$var = Mage::registry('custom_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');
あなたが逃した場合に備えて、これを成し遂げるもう1つの方法があります
セッションを使用します
Mage::getSingleton('core/session')->setSomeSessionVar($data);// In the Controller
$data = Mage::getSingleton('core/session')->getSomeSessionVar(); // In the View;
ブロックコントローラー内にいる場合。
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>
これは、コントローラーからPHTMLファイルにデータを簡単に送信できます。
ステップ1: - 最初にモデルクラスを作成し、varien_objectから拡張します
class Namespace_Modulename_Model_Modelfilename extends Varien_Object
{
}
ステップ2: - コントラーファイルを開き、関数にコードを配置します。
$name='gaurav';
$this->loadLayout();
Mage::getSingleton('Modulename/Modelfilename')->setData('name',$name);
$this->renderLayout();
ステップ3: - PHTMLファイルを開き、コードを配置します。
echo $name=Mage::getSingleton('Modulename/Modelfilename')->getData('name');
出力: - 'gaurav';
所属していません magento.stackexchange