19 de noviembre de 2008. De CakePHP 1.1 a CakePHP 1.2. El baile de los errores. Parte I

He migrado mi programa -hecho en CakePHP 1.1- a CakePHP 1.2 y salen errores por todas partes. Al principio me he asusté un poco, pero descubrí cómo resuelven estos errores aquí y no hay para tanto. Me he tranquilizado un poco. No sé si será la estrategia más acertada, pero intentaré corregir estos errores navegando en la web, sobre la marcha -puedes proponer otra forma de hacer esto, dejando algún comentario-.

Los errores aparecen porque lo primero que hago es entrar en la zona privada; bueno, también pienso que puede ser por las incompatibilidades, digámoslo así, entre los antiguos ayudantes HTML y el ayudante para formularios de CakePHP 1.2. En realidad, pobre ignorante, ¡qué se yo! Voy a ir corrigiendo estos errores uno a uno. Sí, voy a hacerlo así. Por cierto, me estoy acordando del CakePHP en dos días, ¿dónde leí eso? ¡Recórcholis! ¡Mira que feo es este!

Warning 512: Method HtmlHelper::input does not exist [CORE\cake\libs\view\helper.php, line 148]

¡Puaj! Este warning 512 es mi primer error y lo lanza esta instrucción PHP de la vista /usuarios/login.thtml

 echo $html->input('Usuario/login',array('size'=>20)); 

Cambios que hay que hacer en el programa

1. Formularios y ayudantes HTML

He empezado por el punto Changes to form and html helpers de este enlace. La clase HtmlHelper de CakePHP 1.2 no implementa el método input, que sí implementa la versión anterior. En el API puede uno ver las diferencias que hay entre las clases HtmlHelper de CakePHP 1.1 y HtmlHelper de CakePHP 1.2; hay muchos métodos que no implementa la clase HtmlHelper de la versión 1.2 porque los implementa ahora FormHelper.

La vista /usuarios/login.thtml que programé en CakePHP 1.1, que era esta:

<h2>Zona privada</h2>

 

<?php if ($error): ?>

 

<p>El nombre de usuario o la contraseña no son correctos. Inténtalo otra vez.</p>

 

<?php endif; ?>

 

<form action=”<?php echo $html->url(‘/usuarios/login’); ?>” method=”post”>

 

   <fieldset>

 

      <label for=”login”>Usuario:</label>

 

      <?php echo $html->input(‘Usuario/login’, array(‘size’ => 20)); ?>

 

      <label for=”password”>Contraseña:</label>

 

      <?php echo $html->password(‘Usuario/password’, array(‘size’ => 20)); ?>

 

      <?php echo $html->submit(‘Entrar’); ?>

 

   </fieldset>

 

</form>

 

la he tenido que cambiar por esta otra:

 

<?php

   if ($session->check(‘Message.auth’)) $session->flash(‘auth’);

  

   echo $form->create(‘Usuario’, array(‘action’ => ‘login’));

 

   echo $form->input(‘login’);

 

   echo $form->input(‘password’);

 

   echo $form->end(‘Entrar’);

 

?>

 

Y este cambio lo tengo que hacer en todas las vistas del programa.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: