Envoyer des données du contrôleur à phtml
-
16-10-2019 - |
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)
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;
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';