Eigenschaften annotieren
Du kannst auf verschiedene Arten festlegen, welche Eigenschaften "managed" sein sollen.
AnnoDispProperties
Standardmässig werden alle Eigenschaften, die public
oder protected
sind, als "managed" erkannt. Mit der Annotation n2n\dispatch\annotation\AnnoDispProperties
kannst du dies verhindern und die Eigenschaften, die "managed" sein sollen, selbst bestimmen. Dafür müssen diese Eigenschaften nicht zwingend in der Klasse des Form Models deklariert sein. Entsprechende Getter- und Setter-Methoden sind ausreichend. Dies ist beispielsweise nützlich, wenn diese Eigenschaften nicht im Form Model, sondern in einem anderen Objekt (z. B. eine Entity) deklariert sind.
class ExampleForm implements Dispatchable { private static function _annos(AnnoInit $ai) { $ai->c(new AnnoDispProperties('foos', 'bar')); } private $foos; private $someObject; protected $baz; public function __construct(SomeObject $someObject) { $this->someObject = $someObject; } public function setFoos(array $foos) { $this->foos = $foos; } public function getFoos() { return $this->foos; } public function setBar($bar) { $this->someObject->setBar($bar); } public function getBar() { return $this->someObject->getBar(); } private function _validation(BindingDefinition $bd) { } }
In diesem Beispiel sind die Eigenschaften $foos
und "bar" "managed". Die Eigenschaft $baz
ist hingegend nicht "managed", obwohl sie protected
ist.
nicht deklarierte Eigenschaften
Müssen Eigenschaften, die nicht in der Klasse des Form Models deklariert sind, über Annotationen konfiguriert werden, kann statt der deklarierten Eigenschaft die zugehörige Setter- oder Getter-Methode annotiert werden.
class ExampleForm implements Dispatchable { private static function _annos(AnnoInit $ai) { $ai->m('setFoo', new AnnoDispDateTime(DateTimeFormat::STYLE_SHORT)); } private $someObject; public function __construct(SomeObject $someObject) { $this->someObject = $someObject; } public function setFoo(\DateTime $foo) { $this->someObject->setFoo($foo); } public function getFoo() { return $this->someObject->getFoo(); } private function _validation(BindingDefinition $bd) { } }