|
|
# {control control=""}
|
|
|
|
|
|
Über die Smarty Funktion {control} können PHP Controls an jede Stelle der Seite eingebunden werden.
|
|
|
|
|
|
## PHP Control erstellen
|
|
|
|
|
|
Der Name der PHP Datei muss gleich der Name der Control Klasse sein.
|
|
|
Zusätzlich muss das Control über den Namespace erreichbar sein, Ordner und Namespace müssen gleich sein.
|
|
|
|
|
|
Ein PHP Control muss von der Elternklasse *\QUI\Control* erben.
|
|
|
|
|
|
*Beispiel*
|
|
|
|
|
|
```
|
|
|
namespace QUI\Package\Controls;
|
|
|
|
|
|
class MyControl extends \QUI\Control
|
|
|
{
|
|
|
public function getBody()
|
|
|
{
|
|
|
return '<p>html</p>';
|
|
|
}
|
|
|
}
|
|
|
```
|
|
|
|
|
|
## PHP Control mit einem JavaScript Control verbinden
|
|
|
|
|
|
Während des Seitenaufbaus parsed QUI die Seite nach QUI Controls. Ein Control wird über das Attribute *data-qui* bestimmt.
|
|
|
D.h. besitzt ein Element die Eigenschaften *data-qui* versucht QUI das darin definierte Control hier zu initialisieren.
|
|
|
|
|
|
QUI bindet das Control auf zwei verschiedene Wege ein, ist der Inhalt des HTML Elementes leer wird ein *inject* ausgeführt, ist der Inhalt nicht leer wird ein *import* ausgeführt.
|
|
|
|
|
|
Das JavaScript Control kann auf diese zwei Methoden über Events reagieren. *onInject* und *onImport.*
|
|
|
|
|
|
|
|
|
```html
|
|
|
<!-- inject -->
|
|
|
<div data-qui="packages/path/to/Control"></div>
|
|
|
|
|
|
<!-- import -->
|
|
|
<div data-qui="packages/path/to/Control">
|
|
|
<p>some html</p>
|
|
|
<p>some html</p>
|
|
|
</div>
|
|
|
```
|
|
|
|
|
|
|
|
|
## Aufruf über Smarty
|
|
|
|
|
|
Mit der Funktion {control} kann nun das PHP Control eingebunden werden.
|
|
|
|
|
|
Das control Attribute gibt das PHP Control mit dem komplettem Namespace an.
|
|
|
Alle weiteren Attribute werden an das Control direkt als Parameter übergeben.
|
|
|
|
|
|
*Beispiel*
|
|
|
|
|
|
```html
|
|
|
|
|
|
{control control="\QUI\Package\Controls\MyControl" param1="" param2=""}
|
|
|
|
|
|
``` |