|
|
Profil erweitern
|
|
|
======
|
|
|
|
|
|
Das Frontend-Users Modul bietet die Möglichkeit das Profil Control (Oberfläche) eines Benutzers zu erweitern.
|
|
|
|
|
|
Über eine `frontend-users.xml` ikönnen Sie neue Tabs und Controls hinzufügen.
|
|
|
|
|
|
|
|
|
frontend-users.xml
|
|
|
------
|
|
|
|
|
|
Legen Sie in Ihrem Root Verzeichnis eine `frontend-users.xml` an.
|
|
|
|
|
|
### Beispiel einer frontend-users.xml
|
|
|
|
|
|
```xml
|
|
|
<quiqqer>
|
|
|
<frontend-users>
|
|
|
<profile>
|
|
|
<tab name="user" require="" icon="fa fa-user" control="">
|
|
|
<text>
|
|
|
<locale group="quiqqer/frontend-users" var="profile.userData.text"/>
|
|
|
</text>
|
|
|
<template>OPT_DIR/quiqqer/frontend-users/src/QUI/FrontendUsers/Controls/Profile/user.html</template>
|
|
|
</tab>
|
|
|
<tab name="avatar" icon="fa fa-address-book-o">
|
|
|
<text>
|
|
|
<locale group="quiqqer/frontend-users" var="profile.avatar.text"/>
|
|
|
</text>
|
|
|
<template>OPT_DIR/quiqqer/frontend-users/src/QUI/FrontendUsers/Controls/Profile/avatar.html</template>
|
|
|
</tab>
|
|
|
</profile>
|
|
|
</frontend-users>
|
|
|
</quiqqer>
|
|
|
```
|
|
|
|
|
|
- `<quiqqer>` beginnt das XML
|
|
|
- `<frontend-users>` beginnt die Angaben für das Frontend-Users Modul
|
|
|
- `<profile>` Angaben für das Profil
|
|
|
|
|
|
### Angaben eines Tabs / Kategorie
|
|
|
|
|
|
- `<tab>` erstellt einen neuen Tab in den Profil Controls
|
|
|
- `<text>` angezeigter Text. Kann auch `<locale>` enthalten
|
|
|
- `<template>` ist optional, gibt ein HTML Template
|
|
|
|
|
|
#### Controls oder Template in einem Tab
|
|
|
|
|
|
Sie haben zwei Möglichkeiten einen Tab mit Inhalt zu füllen.
|
|
|
Wenn Sie lediglich ein Template nutzen möchten um Informationen bereit zustellen, können Sie ein einzelnes Template zur Anzeige angeben.
|
|
|
|
|
|
```xml
|
|
|
<tab name="avatar" icon="fa fa-address-book-o">
|
|
|
<text>
|
|
|
<locale group="quiqqer/frontend-users" var="profile.avatar.text"/>
|
|
|
</text>
|
|
|
<template>OPT_DIR/quiqqer/frontend-users/src/QUI/FrontendUsers/Controls/Profile/avatar.html</template>
|
|
|
</tab>
|
|
|
```
|
|
|
|
|
|
Möchten Sie jedoch weitere Logik verwenden, Benutzerdaten ändern oder hinzufügen, können Sie ein Control als Schnittstelle implementiere.
|
|
|
|
|
|
```xml
|
|
|
<tab name="user" require="" icon="fa fa-user" control="\QUI\My\Control">
|
|
|
```
|
|
|
|
|
|
##### Tab Control
|
|
|
|
|
|
Ein Tab Control muss folgende Eigenschaften erfüllen:
|
|
|
|
|
|
- Muss von `QUI\Control` erben
|
|
|
- Muss das Interface `QUI\FrontendUsers\Controls\Profile\ControlInterface` implementieren
|
|
|
|
|
|
Das `ControlInterface` besagt das folgende zwei Methoden vorhanden sein müssen:
|
|
|
|
|
|
- onSave
|
|
|
- validate
|
|
|
|
|
|
*onSave*
|
|
|
|
|
|
Wird aufgerufen wenn der Benutzer gespeichert wird.
|
|
|
|
|
|
*validate*
|
|
|
|
|
|
Prüft die eingetragenen Daten. Wenn Sie einen Benutzer erweitern, müssen Sie diese Daten auf Syntax und Korrektheit prüfen.
|
|
|
|
|
|
Ihr HTML des Controls sollte zusätzlich einen Speicher Button beinhaltet damit das darüberliegende Formular abgesendet werden kann. Möchten Sie dies nicht und möchten eine eigene Speicherroutine implementieren können Sie dies tun. Implementieren Sie hierzu eine eigene Ajax Speicherroutine und nutzen einen eigenen Button anstelle des `type="submit"` Buttons.
|
|
|
|
|
|
**Beispiel eines Tab Controls**
|
|
|
|
|
|
```php
|
|
|
<?php
|
|
|
|
|
|
namespace NAMESPACE\NAMESPACE;
|
|
|
|
|
|
use QUI;
|
|
|
use QUI\Control;
|
|
|
use QUI\FrontendUsers\Controls\Profile\ControlInterface
|
|
|
|
|
|
class MyTabControl extends Control implements ControlInterface
|
|
|
{
|
|
|
/**
|
|
|
* @return string
|
|
|
*/
|
|
|
public function getBody()
|
|
|
{
|
|
|
$Engine = QUI::getTemplateManager()->getEngine();
|
|
|
|
|
|
return $Engine->fetch('PATH_TO_HTML_TEMPLATE.html');
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* event: on save
|
|
|
*/
|
|
|
public function onSave()
|
|
|
{
|
|
|
$Request = QUI::getRequest();
|
|
|
|
|
|
if (!$Request->request->get('profile-save')) {
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
/* @var $User QUI\Interfaces\Users\User */
|
|
|
$data = $Request->request->all();
|
|
|
$User = $this->getAttribute('User');
|
|
|
|
|
|
$User->setAttributes($data);
|
|
|
$User->save();
|
|
|
}
|
|
|
|
|
|
|
|
|
public function validate()
|
|
|
{
|
|
|
|
|
|
}
|
|
|
}
|
|
|
``` |
|
|
\ No newline at end of file |