Estoy empezando con CakePHP, y las cosas no van tan bien hasta ahora.Cómo generar un hipervínculo desde un controlador en cakePHP
Tengo un controlador que se encarga de confirmar los correos electrónicos de los usuarios. Al registrarse, al usuario se le envía un correo electrónico con un código de confirmación en un enlace. Dependiendo del código de confirmación que den, el controlador da diferentes respuestas de texto. Una de estas respuestas incluye un hipervínculo para iniciar sesión.
Estoy tratando de usar el helper Html, pero aunque lo he cargado en $ helpers en la parte superior de la clase, solo lo hago funcionar si luego uso App :: import, y luego lo instancia.
¡Todo parece excesivo simplemente hacer un hipervínculo! ¿Cuántas veces tengo que cargar la misma clase?
Dondequiera que miro en la web me sigue diciendo que es una mala idea usar un ayudante en un controlador, pero ¿de qué otro modo puedo obtener el enlace?
así que he
var $helpers = array('Html');
en la parte superior del controlador, y:
if (isset($this->User->id)) { // Check the user's entered it right
// Do some stuff to remember the user has confirmed
// This is to load the html helper - supposedly bad form, but how else do I make the link?
App::import('Helper', 'Html');
$html = new HtmlHelper();
$this->set('message', __("Your email address has been confirmed.", TRUE)." ".$html->link(__("Please log in", TRUE), array('controller' => "users", 'action' => "login")));
} else {
$this->set('message', __("Please check your mail for the correct URL to confirm your account", TRUE));
}
en el método de confirmación del controlador y
<div>
<?php echo $message;?>
</div>
en la vista a la salida de la resultante mensaje
Seguramente me voy a equivocar en algún lado. ¿Alguien puede explicar cómo?
Aaah, ¡vale! Eso tiene un poco más de sentido. Fue la idea de pasar los datos completos del usuario a la vista que no obtuve. Vi la vista mucho más "tonta". Gracias por la buena ilustración clara. – Hippyjim
Pensé que $ this-> Usuario era como resultado de la consulta en lugar de un modelo. Tu derecho, deberías estar haciendo $ user = $ this-> User-> find() luego $ this-> set ('user', $ user), para que el usuario sea una matriz de resultados en la vista. –
Sí, entendí que eran los datos, más que el modelo: pasar el modelo podría poner en riesgo todo tipo de desagradables referencias circulares, ¿no? (sin mencionar romper el MVC) – Hippyjim