CakePHP: Make Datenfeld Admin-editierbare nur
-
27-09-2019 - |
Frage
In meinem Datenmodell, ich habe ein Feld bekommt, die nur Admin-editierbar sein sollten. Normale Benutzer können Datensätze im Modell bearbeiten und dieses spezielle Feld sehen, aber sie sollten es nicht zu bearbeiten können. Gibt es einen einfachen / clean Ansatz, dies zu tun? Ich glaube, dass es notwendig ist eine zusätzliche admin_edit Controller-Aktion zu erstellen, aber was ist der beste Weg, ein Datenfeld in der Steuerung auf „lock“?
Lösung
Es ist nicht notwendig, eine neue Controller-Aktion zu erstellen, aber Sie können so entscheiden. Beachten Sie, dass Sie immer noch die gleiche Ansicht für sie mit $this->render("edit")
verwenden können, finden Sie unter: http: //book.cakephp. org / view / 428 / render
Ich denke, Sie sollten:
- verwenden die gleiche Controller-Aktion, wenn das nicht für die Benutzer und Administratoren verwirrend
- Anzeige nur ein Eingabefeld, wenn der Benutzer admin und geben Sie den Text für andere Benutzer
- Prüfung für die Zulassung in der Steuerung
Andere Tipps
Abhängig von Ihrem System, das leicht als Validierungsmethode im Modell behandelt werden könnte. Schreiben Sie eine benutzerdefinierte Funktion im Modell zu überprüfen, ob der Benutzer die Berechtigung hat.
Sie können auch mit before () in Modell tun. Wenn das Feld ist, und sie haben keine Berechtigung, es entfernen.
Sie können simly auf der Admin-Rolle überprüfen in der Bearbeitungsansicht
if (hasRoleAdmin) {
echo $this->Form->input(...);
}