Enviar datos del controlador a PHTML
-
16-10-2019 - |
Pregunta
Tengo este controlador:
...
public function insertAction() {
$something = 'testcase';
$this->loadLayout();
$this->_title($this->__("the title"));
$this->renderLayout();
}
...
Me gustaría acceder $something
En mi documento .phtml, ¿cómo hago esto? (o para ponerlo de otra manera: ¿cómo puedo acceder $something
en mi archivo .phtml)
Solución
Hay un par de formas de hacer esto.
Asignar directamente al bloque:
$block->assign($var);
o
$block->assign(array('myvar'=>'value','anothervar'=>true));
Luego puede acceder a él en el archivo PhTML como este:
$this->myvar
Use el registro de mago:
Mage::register('custom_var', $var);
y luego úsalo como:
$var = Mage::registry('custom_var');
Otros consejos
Su PHTML debe ser representado por un bloque. El bloque debe tener un nombre en el diseño.
Puedes hacer esto después de llamar $this->loadLayout();
$block = Mage::app()->getLayout()->getBlock('block_name_here')
if ($block){//check if block actually exists
$block->setSomething($something);
}
Entonces puedes obtener el valor en el phtml
archivo como
$value = $this->getSomething();
//or
$value = $this->getData('something');
En caso de que la gente se haya perdido, hay una forma más de hacer esto
Usando sesiones
Mage::getSingleton('core/session')->setSomeSessionVar($data);// In the Controller
$data = Mage::getSingleton('core/session')->getSomeSessionVar(); // In the View;
Si estás dentro de tu controlador de bloque.
class module_namespace_Block_example extends Mage_Core_Block_Template
{
protected $_var;
public function __construct(){
$this->_var = "something";
}
}
Luego en su archivo .phtml
<?php
$variable = $this->_var;
echo $variable; // prints "something"
?>
<h1>You're inside your phtml file...... <?php echo $variable; //prints "something" ?></h1>
Esto es muy fácil enviar datos desde el controlador al archivo PhTML.
Paso1:- En primer lugar, cree la clase Modelo y se extiende desde Varien_Object
class Namespace_Modulename_Model_Modelfilename extends Varien_Object
{
}
Paso 2:- Ahora abra el contador y coloque el código en la función.
$name='gaurav';
$this->loadLayout();
Mage::getSingleton('Modulename/Modelfilename')->setData('name',$name);
$this->renderLayout();
Paso 3:- Abra el archivo PhTML y coloque el código.
echo $name=Mage::getSingleton('Modulename/Modelfilename')->getData('name');
Salida:- 'Gaurav';