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)

È stato utile?

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;

fonte

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a magento.stackexchange
scroll top