Ei Field

Ei

Ei

Ei-Fields

Gehen wir davon aus, dass unsere Entity BlogArticle folgendermassen implementiert haben:

<?php
namespace atusch\bo;

use n2n\reflection\ObjectAdapter;

class BlogArticle extends ObjectAdapter {
    private $id;
    private $title;    
    private $text;
    
    // getters / setters
}

Wenn wir möchten, dass der Rocket-Nutzer die Eigenschaften $title und $text anzeigen und editieren kann, müssen wir für sie je ein EiField definieren. Da es sich bei beiden Eigenschaften um Strings handeln, verwenden wir das StringEiField. EiField definierst du im EiSpec JSON-Objekt unter der Eigenschaft "fields".

{
    "specs": {
        "atusch-blog-article": {
            "type": "entity",
            "label": "Article",
            "pluralLabel": "Articles",
            "entity": "atusch\\bo\\BlogArticle",
            "fields": {
                "title": {
                    "class": "rocket\\spec\\ei\\component\\field\\impl\\string\\StringEiField",
                    "label": "Title",
                    "props": {
                        "mandatory": true,
                        "maxlength": 255,
                        "multiline": false
                    },
                    "objectProperty": "title",
                    "entityProperty": "title"
                },
                "text": {
                    "class": "rocket\\spec\\ei\\component\\field\\impl\\string\\StringEiField",
                    "label": "Text",
                    "props": {
                        "mandatory": false,
                        "multiline": true
                    },
                    "objectProperty": "text",
                    "entityProperty": "text"
                }
            }
        }
    }
}

Bei den Schlüsseln "title" und "text" handelt es sich um die Id des EiFields. Sie identifizieren das jeweilige EiField eindeutig und müssen nicht mit dem Namen der Entity-Eigenschaft übereinstimmen.

Json-Eigenschaft Bedeutung
class Klassenname des gewünschen EiFields (custom).
label Anzeigename im Rocket.
props Indiviuelle Konfiguration. Unterscheidet sich von EiField zu EiField.
objectProperty

Der Namen der Eigenschaft, über die das EiField den Wert lesen und schreiben soll. Die Eigenschaft muss entweder eine öffentliche Getter-Methode haben oder selbst öffentlich sein. Soll die Eigenschaft geschrieben werden können, muss auch eine Setter-Methode vorhanden sein.

Dabei muss es sich nicht zwingend um eine Entity-Eigenschaft handeln. Es werden auch Eigenschaften erkannt, die nur aus Getter- und Setter-Methoden bestehen.

class BlogArticle extends ObjectAdapter {
    private $title;

    public function getTitle() {
        return $this->title;
    }

    public function setTitle($title) {
        $this->title = $title;
    }
    
    public function getLowerTitle() {
        return lcfirst($this->title);
    }
    
    public function setLowerTitle($lowerTitle) {
        $this->title = ucfirst($lowerTitle);
    }
}

Diese Eigenschaft muss nurMöchten wir, dassMuss die Eigen Für die EigenschaftDabei muss es sich nicht zwangsläufig um die Entity-Eigenschaft handeln.

                "title": {
                    ...
                    "objectProperty": "lowerTitle",
                    "entityProperty": "title"
                },

Es ist je nach verwendetem EiField optional ein objectProperty zu definieren.

entityProperty Der Namen einer Entity-Eigenschaft, auf die sich das EiField beziehen kann. EiFields benötigen diese Eigenschaft normalerweise nicht zum schreiben oder lesen, sonderen eher für Filter und ähnliches. Es ist je nach verwendetem EiField optional ein entityProperty zu definieren.

 

« EiSpec Built-in Ei Fields »

comments_title

post_login_to_create

questions_title