En mi tabla, he creado un índice en 'col1' para evitar entradas duplicadas que funciona bien, pero el mensaje de error resultante que se muestra a un usuario cuando intenta agregar una entrada duplicada me parece un problema de seguridad, ya que muestra el SQL incluyendo El prefijo de la tabla.
¿Hay alguna forma de evitar que Joomla muestre el SQL en el mensaje de error?
Intenté cambiar la configuración de informes de errores en la configuración global, pero no tiene ningún efecto por lo que puedo decir ...
Mensaje de ejemplo:
Error
Save falló con el siguiente error: Duplicar la entrada 'Test' para la clave 'TestKey' SQL = INSERTAR EN `jml_mycomp_tbl1` (` id`, `col1`,` ordering`, `state`, 'created_by`) VALUES (' 0 ' , 'Prueba', '2', '1', '730')
joomla-3.x
component
error-handling
doovers
fuente
fuente

display_errors(configuración de PHP) debe estar desactivado y dichos errores solo deben registrarse en su registro de errores del lado del servidor.Respuestas:
Tal vez pueda usar un comando try catch:
fuente
JTablela mejor solución fue anular elcheckmétodo como en mi respuesta.Como no parece posible evitar este comportamiento, implementé la siguiente solución. Agregue una verificación duplicada a una
JTablecheckanulación de método:fuente
Debe cambiar su código que hace que la inserción primero verifique si hay duplicados y devuelva un error apropiado (uno que usted escribe) al usuario y no confiar en mostrar el error real devuelto por MySQL.
fuente
JTable, estaría más inclinado a anular elcheckmétodo y probar un duplicado allí. Quiero mostrar un mensaje de error al usuario, ¡pero no con el SQL!