Primero, soy consciente de esta pregunta:
/programming/14799733/remove-name-field-from-joomla-registration-form
Pero el enlace en su respuesta está muerto, y la ruta del archivo mencionada no existe en la última versión de Joomla (versión 3.3), por lo que la respuesta no sirve de nada.
Lo que quiero es simple: el formulario de registro para Joomla se ve así:
Quiero asegurarme de que el proceso de registro sea lo más simple posible para mis usuarios para que realmente lo completen, y hay algunos problemas:
- No necesito saber el nombre real del usuario.
- Prefiero no tener cuadros de "confirmación". El consenso general es que no son necesarios. /ux/484/is-a-repeat-password-field-necessary-in-a-signup-page
- Todo es obligatorio, ¿por qué molestarse en marcar los campos obligatorios?
Seguramente esta es una página de registro mucho mejor:
Modifiqué el archivo \ components \ com_users \ models \ forms \ Registration.xml para que el formulario se vea como lo que quiero, ¡y funcionó! Pero cada vez que envío el formulario, la validación aún busca los campos faltantes, por lo que me informa que debo proporcionar un nombre:
"Error de registro: ingrese su nombre".
¿Cómo puedo desactivar las verificaciones para el campo de nombre, así como los dos campos de confirmación?
Como se requiere un nombre, me gustaría establecer el nombre para el nombre de usuario proporcionado (de modo que nombre de usuario y nombre son los mismos por defecto). Si el usuario realmente quiere establecer un nombre real en su página de perfil después del registro, debería poder hacerlo, pero no debería ser obligatorio.
¿Voy por esto de la manera incorrecta? He leído en algunos lugares que modificar los archivos principales de Joomla no es bueno, ya que podría interrumpirse en una actualización, y que en su lugar deberían usarse "anulaciones". Por lo general, estas respuestas simplemente enlazan a la página de Joomla en anulaciones, y no brindan más explicaciones sobre cómo usarlas para hacer lo que el autor de la pregunta. Traté de resolverlos, pero no puedo, así que si las anulaciones son el camino a seguir, explique cómo haría esto con ellos, en lugar de simplemente vincularme al tutorial de anulación.
Apreciaría mucho cualquier ayuda que me puedan brindar, ¡he estado tratando de resolver esto por unas horas ahora!
fuente
Respuestas:
Idealmente, todo esto se hará en un complemento de usuario. No estoy seguro de que mucha gente se dé cuenta de esto, pero puede editar el formulario desde un complemento (no se requiere un hack core).
Del mismo modo, el complemento verá la entrada antes de que el modelo intente guardar la entrada, por lo que puede burlarse de algunos de los campos de duplicación de campo para forzarlo a pasar la validación.
Esta función en un complemento de "usuarios" le permite modificar el formulario:
Luego puede usar una función onUserBeforeSave para restablecer cualquiera de los campos que necesita restablecer para pasar la validación. (Esto puede no ser totalmente necesario, así que intente sin ver qué errores obtiene).
fuente
Ok, estaba pensando en un enfoque sin tener que hackear nada o instalar extensiones de terceros. Mi método implicará una anulación de plantilla que deberá realizar para el componente com_users , específicamente la vista de registro .
Ahora para los campos (suponiendo que su anulación de plantilla esté configurada), no los eliminaremos, sino que los ocultaremos ya que el controlador y el modal requieren datos de ellos. Abra el siguiente archivo que ahora es su anulación de plantilla:
y agregue el siguiente código cerca de la parte superior del archivo justo después
JHtml::_('behavior.formvalidation');
:He agregado algunos comentarios para que sepa qué está haciendo cada fragmento de código.
Espero que esto ayude :)
fuente
La respuesta de @ DavidFritsch fue muy útil. Sin embargo, un par de problemas que encontré fueron:
A) No puede eliminar por completo ciertos campos obligatorios ya que causa problemas con el filtrado de datos en el envío del formulario (vea los comentarios en el código a continuación). Para combatir esto, oculte en lugar de eliminar los campos del objeto de formulario. B) El evento onUserBeforeSave no se activa hasta que sea demasiado tarde para evitar que la lógica de validación de registro rechace el envío del formulario. En su lugar, use el evento onUserBeforeDataValidation.
En mi caso particular, todo lo que quería era dirección de correo electrónico y contraseña. Sin embargo, Joomla arrojó una complicación aquí, ya que la dirección de correo electrónico aparecía después de la contraseña (dictada por el orden de los campos declarados en el archivo Registration.xml), que se vería tonto desde la perspectiva de la experiencia del usuario. Para evitarlo, volví a etiquetar el campo de nombre de usuario como 'Dirección de correo electrónico' y, en su lugar, oculté el campo de dirección de correo electrónico. El correo electrónico se omite del nombre de usuario en el envío del formulario.
(Nota menor: he restringido el complemento para que solo funcione en el formulario 'com_users.registration' para mis propósitos, en comparación con la respuesta de David, que también considera otros formularios).
fuente