¿Codificar el campo de entrada del formulario en cakephp para que el usuario no pueda editarlo?

Tengo el siguiente campo de formulario en un formulario de registro en cakephp. Quiero que sea 'codificado', para que el usuario no pueda editarlo

echo $form->input('name', array('label' => __('Name *', true)));

preguntado el 05 de febrero de 14 a las 10:02

3 Respuestas

Entonces no lo agregues al formulario. Esos campos deben agregarse en el controlador (o incluso antes de Validar/antes de Guardar la capa del modelo) y luego justo antes de guardar:

if ($this->request->is('post')) {
    $this->User->create();
    // add the content before passing it on to the model
    $this->request->data['User']['status'] = 1;
    if ($this->User->save($this->request->data)) {
        ... 
    }
}

Ver "valores predeterminados - ocultos" aquí.

Respondido 05 Feb 14, 10:02

Puedes configurar el readonly propiedad:

echo $form->input('name', array('label' => __('Name *', true), 'readonly' => true));

Sin embargo, esto solo afecta la interfaz de usuario, por lo que aún debe aplicar la respuesta de Mark para asegurarse de que el usuario no cambie el valor.

Respondido 05 Feb 14, 10:02

Exactamente, sin el componente de seguridad este campo muy bien podría ser modificado por cualquier visitante. - marca

Dos opciones:

  1. codifique el valor antes de guardar
  2. usar lista blanca

Si desea que el campo sea de solo lectura, desde el momento en que se establece. usar lista blanca. de esta manera, no importa si el usuario enviará el campo o no. el pastel no lo salvará.

$white_list = array('title', 'category');
$this->Model->save($data,$validate,$white_list);

La otra solución es como marca codificada:

$this->request->data['User']['status'] = 1;
if ($this->User->save($this->request->data)) {
... 
}

Cualquier solución debe mezclar una indicación de interfaz de usuario de que el campo no se cambiará. aunque una buena UX no lo permitirá en primer lugar.

Respondido 05 Feb 14, 11:02

La inclusión en la lista blanca no impide que se pueda modificar cuando proviene de la vista (solo el uso de un componente de seguridad o similar lo garantizaría). Es por eso que prefiero no agregarlos al formulario en primer lugar. - marca

Corríjame si me equivoco, pero si un campo no está en la lista blanca, ¿no debería el pastel evitar que esté en la consulta de actualización? - yossi

Sí, pero eso no viene al caso aquí. Como el campo tendría que estar en la lista blanca para poder guardarlo también. - marca

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.