it-swarm.com.de

Wo kann eine Änderung des Feldwerts im Formularsatz für benutzerdefinierte Komponenten verhindert werden?

Wo ist der beste Ort in Joomla MVC (serverseitig), um Benutzern zu verbieten, einen Wert in einem bereits vorhandenen Formulareintrag zu ändern? In JTable check/bind/JModel prepareTable oder woanders?

Für den Kontext habe ich in meiner Komponente ein Formular mit bestimmten Feldern, die sich nach der ersten Erstellung nicht ändern sollten, obwohl andere Felder bearbeitet werden können.

Ich kann die Felder in der Bearbeitungsansicht des Elements deaktivieren oder einfach nicht rendern, wenn es eine ID hat, aber das stoppt einen gut gestalteten POST nicht. Daher möchte ich eine Reihe von Werten einfach ignorieren, wenn der Datenarray hat eine ID> 0 (und existiert somit).

2
codinghands

JTable Methode check ist Design für

Methode zum Durchführen von Sicherheitsüberprüfungen für die JTable-Instanzeigenschaften, um sicherzustellen, dass sie sicher in der Datenbank gespeichert werden können.

JTable Methode bind ist Design für

Methode zum Binden eines assoziativen Arrays oder Objekts an die JTable-Instanz.

Beide sind also nicht für das vorgesehen, was Sie tun möchten.

Die JModel Methode prepareTable ist jedoch für

Bereiten Sie die Tabellendaten vor und bereinigen Sie sie, bevor Sie sie speichern.

Also genau das, was Sie brauchen.

protected function prepareTable($table)
{
  // Row exists?
  if ((int)$table->id > 0) {
    // Ignore certain fields
    unset($table->ignoreFieldName);
  }
}
2
Rene Korss