कंट्रोलर से phtml में डेटा भेजें


22

मेरे पास यह नियंत्रक है:

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

मैं $somethingअपने .phtml दस्तावेज़ में पहुँचना चाहूँगा, मैं यह कैसे करूँ? (या इसे दूसरे तरीके से रखने के लिए: मैं $somethingअपनी .phtml फ़ाइल में कैसे पहुंच सकता हूं )

जवाबों:


21

ऐसा करने के कुछ तरीके हैं।

सीधे ब्लॉक को असाइन करें:

$block->assign($var);

या

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

फिर आप इसे इस तरह से phtml फ़ाइल में एक्सेस कर सकते हैं:

$this->myvar

दाना रजिस्ट्री का उपयोग करें:

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

और फिर इसका उपयोग करें जैसे:

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

2
आपने उपयोग किया है $block->assign($var)लेकिन phtmlफ़ाइल में कैसे पुनर्प्राप्त किया जाएगा ?
मोहम्मद फैसल

आप के माध्यम से पहुंच जाएगा $this->myvarटेम्पलेट फ़ाइल के भीतर से
philwinkle

1
मुझे विश्वास है कि यह है Mage::register($key, $value, ...)। तो Mage::register('custom_var', $var),?
Musicliftsme

4
यह होना चाहिए $block->assign('myvar',$var);, यह नहीं होना चाहिए?
15

@philwinkle Mage::register('custom_var', $var); सत्र में मान लिखता है और यह वर्तमान कार्रवाई टेम्पलेट के अलावा अन्य टेम्पलेट फ़ाइल से भी सुलभ हो सकता है?
तितली

18

आपका phtml एक ब्लॉक द्वारा प्रदान किया जाना चाहिए। ब्लॉक का लेआउट में एक नाम होना चाहिए।
आप कॉल करने के बाद ऐसा कर सकते हैं$this->loadLayout();

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

तब आप phtmlफ़ाइल की तरह मान प्राप्त कर सकते हैं

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

यह मेरे लिए काम नहीं करता है :(, मेरे पास एक नियंत्रक है जो उत्पादों के त्वरण के लिए AJAX के माध्यम से उत्पाद आईडी लौटाता है।
शतीश

@Shathish। यह एक अलग मुद्दा है। आप JSON के रूप में प्रतिक्रिया प्रदान कर सकते हैं और AJAX प्रतिक्रिया हैंडलर में मूल्यों का उपयोग कर सकते हैं।
मेरियस

हां, मैं JSON का उपयोग ब्लॉक (कुछ। Phtml) सामग्री को वापस करने और सूची पृष्ठ में इन विवरणों के साथ div को अपडेट करने के लिए कर रहा हूं, मैं अपने नियंत्रक से चर को कैसे पास कर सकता हूं। वास्तव में मैं वर्तमान में $ ब्लॉक-> असाइन () पद्धति का उपयोग कर रहा हूं, जो मुझे लगता है कि सही तरीका नहीं है (जैसा कि यह तंग युग्मन है - अगर मैं गलत हूं तो मुझे सही करें) या क्या मैं इसे एक प्रश्न के रूप में पोस्ट करूंगा?
शतीश

@ शशिश शायद आप एक अन्य प्रश्न पूछेंगे और आशा करते हैं कि यह डुप्लिकेट के रूप में चिह्नित नहीं होगा।
मेरियस

3

यदि आप लोग चूक गए तो इसे पूरा करने का एक और तरीका है

सत्र का उपयोग करना

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

स्रोत


यहां तक ​​कि अगर आपके पास सत्र में डेटा बाद में उपयोग करने के लिए है, तो मैं उपयोग करने की सलाह देता हूं $block->setSomething()या $block->assign()। यह "बहुत अधिक कोड" जैसा लगता है और इसे जितना संभव हो उतना php होना चाहिए।
फेबियन ब्लेसश्मिडेट

-1

यदि आप अपने ब्लॉक कंट्रोलर के भीतर हैं।

class module_namespace_Block_example extends Mage_Core_Block_Template 
{
      protected $_var;

     public function __construct(){

         $this->_var = "something"; 


     }
}

फिर अपने .phtml फ़ाइल में

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

   ?>

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

जिसे आप "ब्लॉक कंट्रोलर" कहते हैं, उसे बस Magento में "ब्लॉक" कहा जाता है। प्रश्न controllersमॉड्यूल की निर्देशिका में पाई जाने वाली नियंत्रक क्रियाओं के बारे में था ।
फाबियन शेंगलर

-4

यह नियंत्रक से डेटा को phtml फ़ाइल में भेजना बहुत आसान है।

Step1: - सबसे पहले मॉडल वर्ग बनाएं और Varien_Object से विस्तारित करें

class Namespace_Modulename_Model_Modelfilename extends Varien_Object
{

}

step2: - अब contollerfile को ओपन करें और फंक्शन में कोड डालें।

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

Step3: - phtml फाइल को खोले और कोड डाले।

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

आउटपुट: - 'गौरव';

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.