Quel est le meilleur endroit dans Joomla MVC (côté serveur) pour interdire aux utilisateurs de modifier une valeur dans un enregistrement de formulaire préexistant? Dans JTable check
/bind
/JModel prepareTable
, ou ailleurs?
Pour le contexte, j'ai un formulaire dans mon composant avec certains champs qui ne devraient pas changer après la création initiale - bien que d'autres champs soient modifiables.
Je peux désactiver ou simplement ne pas restituer les champs dans la vue de modification de l'élément s'il possède un ID, mais cela n'arrêtera pas un POST bien conçu. J'aimerais donc simplement "ignorer" une série de valeurs si Le tableau de données a un ID> 0 (et existe donc).
JTable
method check
est conçu pour
Méthode permettant d'effectuer des contrôles de cohérence sur les propriétés de l'instance JTable afin de garantir leur stockage en toute sécurité dans la base de données.
JTable
method bind
est conçu pour
Méthode pour lier un tableau ou un objet associatif à l'instance de JTable.
Donc, les deux ne sont pas conçus pour ce que vous essayez de faire.
Cependant JModel
méthode prepareTable
est conçu pour
Préparez et désinfectez les données de la table avant de les enregistrer.
C'est donc exactement ce dont vous avez besoin.
protected function prepareTable($table)
{
// Row exists?
if ((int)$table->id > 0) {
// Ignore certain fields
unset($table->ignoreFieldName);
}
}