Inviare i dati dal controller al phtml
-
16-10-2019 - |
Domanda
Ho questo controllore:
...
public function insertAction() {
$something = 'testcase';
$this->loadLayout();
$this->_title($this->__("the title"));
$this->renderLayout();
}
...
mi piacerebbe l'accesso $something
nel mio documento .phtml, come faccio a fare questo? (O per dirla in un altro modo: come posso accedere $something
nel mio file .phtml)
Soluzione
Ci sono un paio di modi per farlo.
Assegna direttamente al blocco:
$block->assign($var);
o
$block->assign(array('myvar'=>'value','anothervar'=>true));
Poi si può accedere nel file phtml in questo modo:
$this->myvar
utilizzare il Registro di Mage:
Mage::register('custom_var', $var);
e quindi utilizzarlo come:
$var = Mage::registry('custom_var');
Altri suggerimenti
Il tuo phtml deve essere reso da un blocco. Il blocco deve avere un nome nel layout.
È possibile farlo dopo aver chiamato $this->loadLayout();
$block = Mage::app()->getLayout()->getBlock('block_name_here')
if ($block){//check if block actually exists
$block->setSomething($something);
}
Quindi è possibile ottenere il valore nel file phtml
come
$value = $this->getSomething();
//or
$value = $this->getData('something');
Nel caso in cui la gente ha mancato v'è un altro modo per ottenere questo fatto
utilizzando sessioni
Mage::getSingleton('core/session')->setSomeSessionVar($data);// In the Controller
$data = Mage::getSingleton('core/session')->getSomeSessionVar(); // In the View;
Se siete all'interno il controller blocco.
class module_namespace_Block_example extends Mage_Core_Block_Template
{
protected $_var;
public function __construct(){
$this->_var = "something";
}
}
Poi nel file .phtml
<?php
$variable = $this->_var;
echo $variable; // prints "something"
?>
<h1>You're inside your phtml file...... <?php echo $variable; //prints "something" ?></h1>
questo è molto facile per inviare i dati da controller a file di phtml.
Step1: - in primo luogo creare la classe del modello e si estende da Varien_Object
class Namespace_Modulename_Model_Modelfilename extends Varien_Object
{
}
Fase 2: - Ora aprite il contollerfile e mettere il codice nella funzione.
$name='gaurav';
$this->loadLayout();
Mage::getSingleton('Modulename/Modelfilename')->setData('name',$name);
$this->renderLayout();
Fase 3: -. Aprire il file phtml e mettere il codice
echo $name=Mage::getSingleton('Modulename/Modelfilename')->getData('name');
Output: - 'Gaurav';