Error en Active_record_base.php

edited mayo 2009 in Dudas/Problemas
Hola a todos,
Estoy probando con la herramienta de validación de email "validates_email_in" y luego que guardo el registro (eso lo hace bien) me arroja el siguiente error "Notice: Array to string conversion in C:\xampp\htdocs\miproyecto\library\kumbia\db\active_record_base\active_record_base.php on line 1652". He buscado en internet pero en realidad no encuentro la solución.

En mi modelo usuario.php tengo:
class Usuario extends ActiveRecord {
public function __construct(){
//Validaciones
//Al registrar un usuario
$this->validates_email_in('email');
}
}

email es el campo con nombre idéntico en la tabla y en el campo del formulario.

En la vista registrar.phtml tengo:
(...)
<div><?php echo form_tag('usuario/crear') ?>
<p>* Email: <?php echo text_field_tag('email', 'size: 25') ?></p>
(... el resto del formulario...)
<p><?php echo submit_tag('Guardar Usuario') ?></p>
<?php echo end_form_tag() ?></div><!-- Fin del formulario-->

y en el Controlador usuario_controller.php:
class UsuarioController extends ApplicationController {
public function __contruct(){
}

public function registrar(){
$this->nullify('usuario');
}

public function crear(){
if ($this->has_post('usuario')){
$usuario = new Usuario;
if ($Usuario->save_from_request()){ Flash::success('Registro de usuario realizado exitosamente');
} else {
$this->usuario = $usuario;
}
}
$this->render('registrar');
}
} //fin de la clase

Les agradezco de antemano si me pueden ayudar <!-- s:wink: --><img src="{SMILIES_PATH}/icon_wink.gif" alt=":wink:" title="Wink" /><!-- s:wink: --> gracias!!

Comentarios

  • edited 11:06
    Con que versión trabajas?
  • edited 11:06
    Versión 5.0 revisión 739.. la descargue de aqui mismo... en manuales y descargas.
    No se si me falta algo porque intenté tambien con el is_alnum($valor) en el controlador y no lo reconoce <!-- s:roll: --><img src="{SMILIES_PATH}/icon_rolleyes.gif" alt=":roll:" title="Rolling Eyes" /><!-- s:roll: --> definitivamente estoy haciendo algo mal...
    Gracias
  • edited 11:06
    Muestrame el archivo en la linea que menciona[1]

    [1] Notice: Array to string conversion in C:\xampp\htdocs\miproyecto\library\kumbia\db\active_record_base\active_record_base.php on line 1652

    Te recuerda que ya kumbia no utiliza Assembla para controlar el desarrollo del framework, actualmente estamos en launchpad
  • edited 11:06
    /**
    * Validacion validates_email
    *
    */
    $e = false;
    foreach($this->_validates_email as $fkey) {
    if (isset($this->$fkey) && !is_null($this->$fkey) && $this->$fkey != '') {
    if (!ereg("^[a-zA-Z0-9_\.\+]+@[a-zA-Z0-9_]+(\.[a-zA-Z0-9_]+)*$", $this->$fkey, $regs)) {
    if (isset($opt)) {
    Flash::error($opt);
    } else {
    $field = isset($opt) ? $opt : $fkey;
    Flash::error("Formato de e-mail erroneo en el campo $field");
    }
    $e = true;
    }
    }
    }

    Copié el segmento por si acaso <!-- s:wink: --><img src="{SMILIES_PATH}/icon_wink.gif" alt=":wink:" title="Wink" /><!-- s:wink: -->
    y gracias, porque no veo el error en ningún lado!!!
  • edited mayo 2009
    Hola, agrego un poco mas por si me pueden ayudar!!! <!-- s:| --><img src="{SMILIES_PATH}/icon_neutral.gif" alt=":|" title="Neutral" /><!-- s:| -->

    Intenté usando $this->validates_format_of("email", "^(+)@((?:[?a?z0?9]+\.)+[a?z]{2,})$"); en mi modelo (del 1er mensaje) en vez de "validates_email_in" y ésta vez si me arroja el mensaje de ! Formato erróneo para email y no me permite guardar los datos cuando el email es incorrecto <!-- s:D --><img src="{SMILIES_PATH}/icon_biggrin.gif" alt=":D" title="Very Happy" /><!-- s:D --> pero me hace lo mismo cuando el email es correcto <!-- s:!: --><img src="{SMILIES_PATH}/icon_exclaim.gif" alt=":!:" title="Exclamation" /><!-- s:!: --> . y arroja el siguiente error:

    Warning: ereg() [function.ereg]: REG_BADRPT in C:\xampp\htdocs\miproyecto\library\kumbia\db\active_record_base\active_record_base.php on line 1611

    en la linea 1611 del Active_Record_Base.php dice:

    /**
    * Validacion validates_format
    *
    */
    $e = false;
    foreach($this->_validates_format as $fkey => $opt) {
    if (isset($this->$fkey) && !is_null($this->$fkey) && $this->$fkey != '') {
    if (!ereg($opt[1], $this->$fkey)) {
    if (isset($opt)) {
    Flash::error($opt);
    } else {
    $field = isset($opt) ? $opt : $fkey;
    Flash::error("Formato erroneo para $field");
    }
    $e = true;
    }
    }
    }

    Si me pueden ayudar se los agradezco...si es cuestión de la versión que tengo por favor indiquenme el enlace directo para descargarla... he buscado y consigo la misma!!!
    Gracias!!!
  • edited 11:06
    ummm, me gustaría ver el método validates_email_in allí es donde esta el problema
  • edited 11:06
    Hasta ahi te agarré la seña!!!!
    El método validates_email_in lo coloqué en el modelo haciendo referencia a "email" (que se llama igual en la tabla y en el formulario)... debo hacer algo más en otro lado????

    que código quieres que muestre???
  • edited 11:06
    ummm en activerecord esta ese método si utilizas un IDE dale Ctrl+Click y te lleva hasta el...
  • edited 11:06
    Hola otra vez, no es que he resuelto el tema, es que no sabía que era un IDE, y entre el trabajo y otras cosas me tardé un poco... <!-- s:wink: --><img src="{SMILIES_PATH}/icon_wink.gif" alt=":wink:" title="Wink" /><!-- s:wink: --> bue, a lo que vamos: Como me dijiste ctrl+click y me arroja esto en active_record_base.php:

    /**
    * Valida que ciertos atributos tengan un formato de e-mail correcto
    * antes de insertar o actualizar
    *
    * $this->_validates_email_in("correo")
    */
    protected function validates_email_in()
    {
    $this->_connect();
    $params = get_params(func_get_args());
    if (is_array($params[0])) {
    $params = $params[0];
    }
    $fields = array();
    for ($i = 0;isset($params[$i]);$i++) {
    $fields[] = $params[$i];
    unset($params[$i]);
    $i++;
    }
    foreach($fields as $p) {
    if (!in_array($p, $this->fields) && !isset($this->$p)) {
    throw new ActiveRecordException('No se puede validar presencia de "' . $p . '"
    en el modelo ' . $this->source . ' porque no existe el atributo</u><br>
    Verifique que el atributo este bien escrito y/o exista en la relaci&oacute;n ');
    return false;
    }
    if (!isset($this->_validates_email[$p])) {
    $this->_validates_email[$p] = $params;
    }
    }
    return true;
    }

    Ahora bien, estoy usando el easyeclipse for php y éste me muestra ciertas cosas:
    Error log: 26 mensajes
    Task: 31 items
    Problems: 0 error, 193 warnings, 0 info

    No sé que signifiquen, será que la cuestión viene por la versión de mi kumbia?? si es así por favor, indíquenme el enlace directísimo donde descargarla porque en realidad he buscado y consigo siempre la misma que tengo yo <!-- s:? --><img src="{SMILIES_PATH}/icon_confused.gif" alt=":?" title="Confused" /><!-- s:? -->

    Gracias <!-- s:D --><img src="{SMILIES_PATH}/icon_biggrin.gif" alt=":D" title="Very Happy" /><!-- s:D -->
  • edited 11:06
    AUXILIO!!!!

    Ahora si es verdad que no <!-- s:( --><img src="{SMILIES_PATH}/icon_sad.gif" alt=":(" title="Sad" /><!-- s:( -->
    Hice una serie de pasos para bajar la versión 0.5.1 revisión 155 (que entiendo es la última) con launchpad y luego de toda la odisea, hice una copia del proyecto en mi computador, la coloqué dentro del htdocs del xampp, la renombre (como había hecho en la 0.5) y ZASS!! ERROR 500.

    Entonces, le vuelvo a cambiar el nombre a la carpeta a kumbia y me abre mi formulario de registro de usuario pero a la mitad y el calendario sin la interfaz (sin la ventanita, sólo letras y números)

    POR FAVOR! necesito que me indiquen si la versión 0.5 está estable o como puedo descargar los arreglos a los bugs sin cambiar otra cosa.. <!-- s:roll: --><img src="{SMILIES_PATH}/icon_rolleyes.gif" alt=":roll:" title="Rolling Eyes" /><!-- s:roll: --> estoy perdiendo mucho tiempo en descargas y no en desarrollo... <!-- s:cry: --><img src="{SMILIES_PATH}/icon_cry.gif" alt=":cry:" title="Crying or Very sad" /><!-- s:cry: -->

    Gracias!!
Sign In or Register to comment.