it-swarm-eu.dev

Dove impedire la modifica del valore del campo nel record del modulo del componente personalizzato?

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).

2
codinghands

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);
  }
}
2
Rene Korss