Qual è il posto migliore in Joomla MVC (lato server) per impedire agli utenti di modificare un valore in un record di modulo preesistente? In JTable check
/bind
/JModel prepareTable
o altrove?
Per il contesto, ho un modulo nel mio componente con alcuni campi che non dovrebbero cambiare dopo la creazione iniziale, anche se altri campi sono modificabili.
Posso disabilitare o semplicemente non visualizzare i campi nella vista di modifica dell'articolo se ha un ID, ma ciò non fermerà un POST ben fatto, quindi mi piacerebbe semplicemente "ignorare" una serie di valori se il l'array di dati ha un ID> 0 (e quindi esiste).
JTable
metodo check
è design per
Metodo per eseguire controlli di integrità sulle proprietà dell'istanza JTable per garantire che siano sicuri da archiviare nel database.
JTable
metodo bind
è design per
Metodo per associare un array o un oggetto associativo all'istanza JTable.
Quindi entrambi non sono progettati per quello che stai cercando di fare.
Tuttavia, JModel
metodo prepareTable
è progettato per
Preparare e disinfettare i dati della tabella prima del salvataggio.
Quindi è esattamente quello che ti serve.
protected function prepareTable($table)
{
// Row exists?
if ((int)$table->id > 0) {
// Ignore certain fields
unset($table->ignoreFieldName);
}
}