मैं अपने कस्टम ब्लॉक के लिए मेरी local.xml फ़ाइल में एक चर सेट करने के लिए कोशिश कर रहा हूँ का उपयोग कर नियंत्रक ब्लॉक करने के लिए:पासिंग डेटा setData
<layout>
<!-- ... -->
<page_homepage>
<!-- ... -->
<reference name="root">
<!-- ... -->
<block type="core/template" name="home_page_sections" template="page/homepage/sections.phtml">
<block type="layout/carousel" name="featured_carousel">
<action method="setData">
<name>filter_attribute</name>
<value>is_featured_product</value>
</action>
</block>
</block>
</reference>
</page_homepage>
</layout>
लेकिन मैं डेटा में दूसरे छोर पर नहीं मिल रहा है मेरी नियंत्रक:
class Foo_Layout_Block_Carousel extends Mage_Core_Block_Template
{
public function __construct()
{
parent::__construct();
$filterAttribute = $this->getFilterAttribute(); // Nothing
$filterAttribute = $this->getData('filter_attribute'); // Nada
// Alright, fine, what DO I have?!
var_dump($this->getData()); // array(0) {} ... Argh!
}
}
मेरे सभी खोज से मैं पाया है कि यह वास्तव में काम करना चाहिए, लेकिन जब से यह नहीं है, मुझे लगता है मैं कुछ स्पष्ट याद कर रहा हूँ है।
<?xml version="1.0"?>
<config>
<modules>
<Foo_Layout>
<version>0.1.0</version>
</Foo_Layout>
</modules>
<global>
<page>
<layouts>
<foo_homepage translate="label">
<label>Homepage</label>
<template>page/homepage.phtml</template>
<layout_handle>page_homepage</layout_handle>
</foo_homepage>
</layouts>
</page>
<blocks>
<layout>
<class>Foo_Layout_Block</class>
</layout>
</blocks>
</global>
</config>
वाह, शानदार जवाब। '_beforeToHtml' को परिभाषित करना चाल था और मेरे उपयोग मामले के लिए पूरी तरह से काम करेगा। –
एलन, इस उत्तर को पोस्ट करने के बाद से आपको कोई अन्य Mage_Core_Block_Abstract या Mage_Core_Block_Template विधि मिली है जो ओवरराइडिंग में उपयोगी हो सकती है, अगर हम '' XML लेआउट निर्देशों द्वारा डेटा सेट का उपयोग करना चाहते हैं? मैं सेट किए गए डेटा के आधार पर ब्लॉक पर कुछ कैश सेटिंग्स सेट करना चाहता हूं, हालांकि इसके लिए ओवरराइड करने के लिए कोई अच्छी विधि प्रतीत नहीं होती है। '_beforeToHtml() 'विधि से पहले' अंतिम सार्वजनिक एचटीएमएल() 'विधि कैश से लोड करने का प्रयास करेगी, और इसलिए मैं जिस उद्देश्य के लिए खोज रहा हूं उसके लिए काम नहीं करेगी। –
Meogi