zu blockieren Ich versuche, eine Variable in meiner local.xml Datei für meinen benutzerdefinierten Block zu setzen:Passing Daten von Layout-Controller mit 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>
Aber ich bin nicht die Daten am anderen Ende immer in mein Controller:
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!
}
}
aus aller meiner Suche habe ich festgestellt, dass dies wirklich funktionieren sollte, aber da es nicht tut habe ich ein Gefühl, das ich offensichtlich etwas fehlt bin. Hier ist mein Layout-Modul der Konfiguration (Ich bin ein einzelnes Modul mit einer Homepage zu definieren und alle anderen Blöcke I für die Website benötigen):
<?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>
Wow, fantastische Antwort. Die Definition eines '_beforeToHtml' hat den Zweck erfüllt und wird für meinen Anwendungsfall perfekt funktionieren. –
Alan, seit dem Verfassen dieser Antwort haben Sie eine andere Methode Mage_Core_Block_Abstract oder Mage_Core_Block_Template gefunden, die beim Überschreiben nützlich sein könnte, wenn wir Daten verwenden wollen, die mit '' XML Layout-Anweisungen erstellt wurden? Ich möchte einige Cache-Einstellungen auf dem Block basierend auf den Daten setzen, die ich eingestellt habe, aber es scheint keine guten Methoden zu geben, um dies zu überschreiben. Die 'final public toHtml()' Methode wird versuchen, aus dem Cache vor der '_beforeToHtml() 'Methode zu laden, und wird daher nicht für den Zweck funktionieren, nach dem ich suche. –
Meogi