Question

J'ai ce contrôleur:

...
public function insertAction() {
    $something = 'testcase';
    $this->loadLayout();
    $this->_title($this->__("the title"));
    $this->renderLayout();
}
...

Je voudrais $something d'accès dans mon document .phtml, comment puis-je cela? (Ou de le mettre dans une autre façon: comment puis-je accéder à $something dans mon dossier .phtml)

Était-ce utile?

La solution

Il y a deux façons de le faire.

Attribuer directement au bloc:

$block->assign($var);

ou

$block->assign(array('myvar'=>'value','anothervar'=>true));

Ensuite, vous pouvez y accéder dans le fichier phtml comme ceci:

$this->myvar

Utilisez le registre Mage:

Mage::register('custom_var', $var);

et ensuite l'utiliser comme:

$var = Mage::registry('custom_var');

Autres conseils

Votre phtml doit être rendu par un bloc. Le bloc doit avoir un nom dans la mise en page.
Vous pouvez le faire après avoir appelé $this->loadLayout();

$block = Mage::app()->getLayout()->getBlock('block_name_here')
if ($block){//check if block actually exists
   $block->setSomething($something);
}

Ensuite, vous pouvez obtenir la valeur dans le fichier phtml comme

$value = $this->getSomething();
//or 
$value = $this->getData('something');

Dans le cas où vous les gens manqué il y a une autre façon d'obtenir ce fait

en utilisant des sessions

Mage::getSingleton('core/session')->setSomeSessionVar($data);// In the Controller
$data = Mage::getSingleton('core/session')->getSomeSessionVar(); // In the View;

la source

Si vous êtes dans votre contrôleur de bloc.

class module_namespace_Block_example extends Mage_Core_Block_Template 
{
      protected $_var;

     public function __construct(){

         $this->_var = "something"; 


     }
}

Ensuite, dans votre fichier .phtml

   <?php 
        $variable = $this->_var;
        echo $variable; // prints "something"

   ?>

   <h1>You're inside your phtml file...... <?php echo $variable;  //prints "something" ?></h1>

ce qui est très facile d'envoyer des données de contrôleur fichier phtml.

Etape 1: - Tout d'abord créer la classe modèle et va de Varien_Object

class Namespace_Modulename_Model_Modelfilename extends Varien_Object
{

}

Etape 2: - Ouvrez maintenant le contollerfile et mettre le code dans la fonction.

$name='gaurav';
$this->loadLayout();
Mage::getSingleton('Modulename/Modelfilename')->setData('name',$name);
$this->renderLayout();

Etape 3: -. Ouvrez le fichier phtml et mettre le code

echo $name=Mage::getSingleton('Modulename/Modelfilename')->getData('name');

Sortie: - 'gaurav';

Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top