Отправить данные из контроллера в 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::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');
Если вы пропустили, есть еще один способ сделать это
используя сеансы
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:- Теперь откройте ContollerFile и поместите код в функцию.
$name='gaurav';
$this->loadLayout();
Mage::getSingleton('Modulename/Modelfilename')->setData('name',$name);
$this->renderLayout();
Шаг 3:- Откройте файл PHTML и поместите код.
echo $name=Mage::getSingleton('Modulename/Modelfilename')->getData('name');
Вывод:- 'Gaurav';