it-swarm.com.de

Beschränken Sie die direkte Bearbeitung eines Datensatzes durch Ändern des ID-Werts in der URL.

tatsächlich erstelle ich eine Komponente, in der ich vor dem Problem stehe, einen Back-End-Benutzer daran zu hindern, einen Datensatz direkt zu bearbeiten.

Ich weiß, wenn wir einen Datensatz in Joomla mit der Funktion "controller.edit" bearbeiten, verwendet sie die Funktion HoldEditId (), um die aktuelle ID in dem mit url übergebenen Userstate zu speichern

ich verwende den mit der HoldEditId () - Funktion im Modell gespeicherten Wert, um zu überprüfen, ob die ID der URL mit der in der userState-Variablen zum Laden der korrekten Datensatzdaten gespeicherten ID übereinstimmt

Aber HoldEditId hält nicht nur den aktuellen Wert, sondern auch die zuletzt bearbeitete Datensatz-ID. Jetzt ist das Problem, woher ich weiß, welche ID aktuell gespeichert ist und welche ID zuletzt eingefügt wurde

die Lösung besteht also darin, die alten Werte zu entfernen, die mit der Funktion holdeditid gespeichert wurden. Wenn ein Benutzer auf die Schaltfläche zum Schließen oder Abbrechen klickt, aber wie kann ich das tun und wenn dies richtig ist oder ich sehr falsch mache, gibt es einen anderen einfachen Weg.

2

Auf diese Weise sollten Sie Ihre aktuelle Datensatz-ID aus dem Status in Ihrer Modellklasse laden.

$pk = (!empty($pk)) ? $pk : (int) $this->getState($this->getName() . '.id');

Wenn Sie den zuletzt bearbeiteten Wert in Ihrer holdEditId-Funktion erhalten möchten, können Sie Folgendes verwenden:

$recordId = array_pop($values)

Aber im Idealfall müssen Sie die holdEditId-Funktion überhaupt nicht überschreiben. Sie müssen die ID in Ihrer URL übergeben, damit sie automatisch in Ihr Modell eingefügt wird.

Dies geschieht in der populateState-Funktion Ihres Modells, wenn es JModelAdmin erweitert. Sie können die Funktion populateState in Ihrem Modell überschreiben, um bei Bedarf andere Variablen zu füllen.

1
Nagarjun