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)

¿Fue útil?

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;

fuente

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top