1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
|
<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: 24249 -->
<!-- Reviewed: no -->
<sect2 id="zend.navigation.pages.custom">
<title>Erstellung eigener Seiten Typen</title>
<para>
Wenn <classname>Zend_Navigation_Page</classname> erweiter wird, besteht normalerweise keine
Notwendigkeit den Constructor oder die Methoden <methodname>setOptions()</methodname> oder
<methodname>setConfig()</methodname> zu überladen. Der Constructor der Seite nimmt einen
einzelnen Parameter, ein <type>Array</type> oder ein <classname>Zend_Config</classname>
Objekt, welches an <methodname>setOptions()</methodname> oder an
<methodname>setConfig()</methodname> übergeben wird. Diese Methoden rufen dann die
<methodname>set()</methodname> Methode auf, welche Optionen in native oder eigene
Eigenschaften mappt. Wenn die Option <property>internal_id</property> angegeben wird, dann
wird zuerst nach einer Methode geschaut die <methodname>setInternalId()</methodname> heißt
und die Option wird an diese Methode übergeben wenn Sie existiert. Wenn die Methode nicht
existiert, wird die Option als eigene Eigenschaft der Seite gesetzt, und ist über
<command>$internalId = $page->internal_id;</command> oder
<command>$internalId = $page->get('internal_id');</command> erreichbar.
</para>
<example id="zend.navigation.custom.example.simple">
<title>Die einfachste eigene Seite</title>
<para>
Das einzige Ding das eine eigene Seite implementieren muß ist die
<methodname>getHref()</methodname> Methode.
</para>
<programlisting language="php"><![CDATA[
class My_Simple_Page extends Zend_Navigation_Page
{
public function getHref()
{
return 'something-completely-different';
}
}
]]></programlisting>
</example>
<example id="zend.navigation.custom.example.properties">
<title>Eine eigene Seite mit Eigenschaften</title>
<para>
Wenn Eigenschaften an eine erweiterte Seite angefügt werden, gibt es keine
Notwendigkeit <methodname>setOptions()</methodname> oder
<methodname>setConfig()</methodname> zu Überladen/Modifizieren.
</para>
<programlisting language="php"><![CDATA[
class My_Navigation_Page extends Zend_Navigation_Page
{
private $_foo;
private $_fooBar;
public function setFoo($foo)
{
$this->_foo = $foo;
}
public function getFoo()
{
return $this->_foo;
}
public function setFooBar($fooBar)
{
$this->_fooBar = $fooBar;
}
public function getFooBar()
{
return $this->_fooBar;
}
public function getHref()
{
return $this->foo . '/' . $this->fooBar;
}
}
// Kann jetzt Erstellt werden mit
$page = new My_Navigation_Page(array(
'label' => 'Namen von Eigenschaften werden auf Setter gemappt',
'foo' => 'bar',
'foo_bar' => 'baz'
));
// ...oder
$page = Zend_Navigation_Page::factory(array(
'type' => 'My_Navigation_Page',
'label' => 'Namen von Eigenschaften werden auf Setter gemappt',
'foo' => 'bar',
'foo_bar' => 'baz'
));
]]></programlisting>
</example>
</sect2>
|