Вопрос

У меня есть этот контроллер:

...
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';

Лицензировано под: CC-BY-SA с атрибуция
Не связан с magento.stackexchange
scroll top