Senden Sie Daten vom Controller an PHTML
-
16-10-2019 - |
Frage
Ich habe diesen Controller:
...
public function insertAction() {
$something = 'testcase';
$this->loadLayout();
$this->_title($this->__("the title"));
$this->renderLayout();
}
...
Ich möchte zugreifen $something
Wie mache ich das in meinem .Phtml -Dokument? (oder um es auf andere Weise auszudrücken: Wie kann ich zugreifen? $something
in meiner .phtml -Datei)
Lösung
Es gibt ein paar Möglichkeiten, dies zu tun.
Direkt dem Block zuweisen:
$block->assign($var);
oder
$block->assign(array('myvar'=>'value','anothervar'=>true));
Dann können Sie in der PHTML -Datei wie folgt darauf zugreifen:
$this->myvar
Verwenden Sie das Magierregister:
Mage::register('custom_var', $var);
Und dann benutze es wie:
$var = Mage::registry('custom_var');
Andere Tipps
Ihr PHTML muss von einem Block gerendert werden. Der Block muss einen Namen im Layout haben.
Sie können dies nach dem Anruf tun $this->loadLayout();
$block = Mage::app()->getLayout()->getBlock('block_name_here')
if ($block){//check if block actually exists
$block->setSomething($something);
}
Dann können Sie den Wert in der erhalten phtml
Datei wie
$value = $this->getSomething();
//or
$value = $this->getData('something');
Falls Sie die Leute verpasst haben, gibt es noch einen Weg, dies zu erledigen
Verwenden von Sitzungen
Mage::getSingleton('core/session')->setSomeSessionVar($data);// In the Controller
$data = Mage::getSingleton('core/session')->getSomeSessionVar(); // In the View;
Wenn Sie in Ihrem Blockcontroller sind.
class module_namespace_Block_example extends Mage_Core_Block_Template
{
protected $_var;
public function __construct(){
$this->_var = "something";
}
}
Dann in Ihrer .phtml -Datei
<?php
$variable = $this->_var;
echo $variable; // prints "something"
?>
<h1>You're inside your phtml file...... <?php echo $variable; //prints "something" ?></h1>
Dies ist sehr einfach zu senden, dass Daten von Controller an die PHTML -Datei gesendet werden.
SCHRITT1:- Erstellen Sie zunächst die Modellklasse und erstreckt sich von VIVIEN_OBJECT
class Namespace_Modulename_Model_Modelfilename extends Varien_Object
{
}
STEP2:- Öffnen Sie nun die ContollerFile und legen Sie den Code in die Funktion ein.
$name='gaurav';
$this->loadLayout();
Mage::getSingleton('Modulename/Modelfilename')->setData('name',$name);
$this->renderLayout();
Schritt 3:- Öffnen Sie die PHTML-Datei und setzen Sie den Code ein.
echo $name=Mage::getSingleton('Modulename/Modelfilename')->getData('name');
Ausgabe:- 'Gaurav';