# getRenderOptions
La méthode getRenderOptions
permet de spécifier des options de représentations
- de Smart Element
- de Smart Field
/**
* @param \Anakeen\Core\Internal\SmartElement $document current Smart Element to render
* @return RenderOptions default render configuration options
*/
public function getRenderOptions(\Anakeen\Core\Internal\SmartElement $document);
Certaines options de Smart Fields sont communes à tous, tandis que d'autres dépendent de son type.
Les classes Anakeen\Ui\DefaultView
et Anakeen\Ui\DefaultEdit
retournent les options par défaut des Smart Fields.
Cette méthode doit retourner un objet de la classe Anakeen\Ui\RenderOptions
qui contient les options choisies pour les
Smart Fields du Smart Element à visualiser.
Les options sont des objets héritant de la classe \Anakeen\Ui\BaseRenderOptions
. Cette classe permet d'associer chaque
option à un ou plusieurs Smart Fields au moyen de la méthode setScope
.
En particulier, il existe
- une classe pour les options du Smart Element (
\Anakeen\Ui\DocumentRenderOptions
) - une classe pour les options communes à tous les types de Smart Fields (
\Anakeen\Ui\CommonRenderOptions
) - une classe par type de Smart Field (
\Anakeen\Ui\<type>RenderOptions
)
Exemple :
$options = new Anakeen\Ui\RenderOptions();
$enumOption = new Anakeen\Ui\EnumRenderOptions();
$enumOption->setScope(\Anakeen\AttributeIdentifiers\My_family::my_continent);
$enumOption->useFirstChoice(false);
$options->setOption($enumOption);
Afin de simplifier la définition des options, des alias sont définis sur la classe Anakeen\Ui\RenderOptions
:
Type | Méthode | Classe associée |
---|---|---|
document | document() | Anakeen\Ui\DocumentRenderOptions |
commune | common() | Anakeen\Ui\CommonRenderOptions |
account | account() | Anakeen\Ui\AccountRenderOptions |
array | arrayAttribute() | Anakeen\Ui\ArrayRenderOptions |
color | color() | Anakeen\Ui\ColorRenderOptions |
date | date() | Anakeen\Ui\DateRenderOptions |
docid | docid() | Anakeen\Ui\DocidRenderOptions |
double | double() | Anakeen\Ui\DoubleRenderOptions |
enum | enum() | Anakeen\Ui\EnumRenderOptions |
file | file() | Anakeen\Ui\FileRenderOptions |
frame | frame() | Anakeen\Ui\FrameRenderOptions |
htmltext | htmltext() | Anakeen\Ui\HtmltextRenderOptions |
int | int() | Anakeen\Ui\IntRenderOptions |
image | color() | Anakeen\Ui\ImageRenderOptions |
longtext | longtext() | Anakeen\Ui\LongtextRenderOptions |
password | password() | Anakeen\Ui\PasswordRenderOptions |
money | money() | Anakeen\Ui\MoneyRenderOptions |
tab | tab() | Anakeen\Ui\TabRenderOptions |
text | text() | Anakeen\Ui\TextRenderOptions |
time | time() | Anakeen\Ui\TimeRenderOptions |
timestamp | timestamp() | Anakeen\Ui\TimestampRenderOptions |
Exemple :
use Anakeen\Ui\RenderAttributeNeeded;
use Anakeen\AttributeIdentifiers\My_family;
class RenderConfigCustom extends \Anakeen\Ui\TransitionRender
{
/**
- @param \Anakeen\Core\Internal\SmartElement $document current smart element to render
- @return RenderOptions default render configuration options
*/
public function getRenderOptions(\Anakeen\Core\Internal\SmartElement $document)
{
$options = parent::getRenderOptions($document);
$options->enum(My_family::my_continent)->display(\Anakeen\Ui\EnumRenderOptions::horizontalDisplay);
$options->money()->setCurrency('EUR');
return $options;
}
}
# Remarques
Une option posée pour un Smart Field identifié est prioritaire sur l'option posée pour un type.
Une option posée pour un type est prioritaire à une option commune posée pour tous les Smart Fields.
Exemple :
use Anakeen\Ui\RenderAttributeNeeded;
use Anakeen\AttributeIdentifiers\My_family;
class RenderConfigCustom extends \Anakeen\Ui\TransitionRender
{
/**
- @param \Anakeen\Core\Internal\SmartElement $document current Smart Element to render
- @return RenderOptions default render configuration options
*/
public function getOptions(\Anakeen\Core\Internal\SmartElement $document)
{
$options = parent::getOptions($document);
$options->commonOption()->showEmptyContent("Non communiqué");
$options->commonOption("my_phone")->showEmptyContent("Pas de téléphone");
return $options;
}
}
# Options personnalisées
Des options personnalisées peuvent aussi être propagées à la vue du client. Ces options non utilisées sur le rendu standard peuvent être exploitées par un code javascript spécifique.
La méthode setOption
permet d'ajouter des options supplémentaires.
Les identifiants de ces options ne doivent pas être en conflit avec les noms des options existantes. Si l'identifiant est un identifiant déjà reconnu, cela revient à modifier ce paramètre de représentation.
Les valeurs de l'option peuvent être des nombres, des chaînes de caractères, des tableaux ou tout autre type qui peut être converti en JSON. C'est la donnée convertie en JSON qui sera exploitée.
$options = new Anakeen\Ui\RenderOptions();
$options->commonOptions(My_contact::zct_photo)
->setOption("MyFirstCustomOption", "MyOptionValue");
->setOption("MySecondCustomOption", [
"One"=>"MyFirstValue",
"Two"=>"MySecondValue"
]);
Exemple récupération en JS :
import ankSmartController from "@anakeen/user-interfaces/components/lib/AnkController";
ankSmartController.registerFunction("myContactKey", scopedController => {
scopedController.addEventListener(
"change",
{
name: "myEvent.myFamily"
},
function(smartElement, smartField) {
// Si l'attribut my_attr égal "GO" alors les attributs ayant l'option MyFirstCustomOption sont cachés
if (smartField.attributeValue.value === "GO") {
var attributes = scopedController.getAttributes();
_.each(attributes, function(attr) {
if (attr.getOption("MyFirstCustomOption") === "MyOptionValue") {
scopedController.hideAttribute(attr.id);
}
});
}
}
);
});