Does anyone have any idea?
On 7 abr, 20:25, elHobbit <[EMAIL PROTECTED]> wrote:
> Thanks b logica.
>
> But, I really need to use the validation rules in the User model.
> I'll try to overwrite the validation rules for the fields I'm not
> using in this view.
> Anyway, I think the problem isn't that, because with different fields
> the form works ok.
>
> Again, thanks for your help. :)
>
> On Apr 7, 7:31 pm, "b logica" <[EMAIL PROTECTED]> wrote:
>
> > If the problem is that Cake is trying to validate User when
> > unnecessary you could try what Dardo just suggested for a similar
> > problem I was having. Put this in your edit() action:
>
> > $this->User->validate = array();
>
> > On Mon, Apr 7, 2008 at 4:42 PM, elHobbit <[EMAIL PROTECTED]> wrote:
>
> > > First, excuse me for my poor english.
>
> > > I'm using Cake 1.2.6311. I'm having a weird problem validating some
> > > fields from my model.
>
> > > The situation is like that:
>
> > > - One model "users" with validation rules.
> > > - "Users" controller with 2 basic actions: 'edit' & 'changepassword'.
> > > - The problem: in the action "changepassword" where I'm only showing
> > > the field "password" (and hidden ID field) when the form is submited
> > > I'm obtaining a connection reset.
>
> > > The weird thing is:
>
> > > - If I add this two lines, in which I set the value for the "email"
> > > into the ['data'] array the forms submits OK and the validation is
> > > triggered.
> > > ------------------------------------------------------------------
> > > $pp = $this->User->read( null, $id );
> > > $this->data['User']['email'] = $pp['User']['email'];
> > > ------------------------------------------------------------------
>
> > > - If the only showed field is "email" the form is submited OK and the
> > > validation triggered as expected without manually loading the
> > > "password" field to the "data" array. So I guess this is not a problem
> > > related with some requirement of having all "validated" fields in the
> > > form.
>
> > > My question is:
> > > Why if I only show the "email" field everything works fine. But with
> > > the field "password" I've to use the workaround from above?
> > > I'm very new with Cake so is VERY POSSIBLE I'm doing something veeeery
> > > wrong.
>
> > > Someone can help me with this issue? Thanks for your attention.
>
> > > PS: here is the code of my files:
>
> > > User Model:
> > >
> > > -------------------------------------------------------------------------------------
> > > <?php
> > > class User extends AppModel{
>
> > > var $name = 'User';
> > > var $belongsTo = array( 'Company', 'Group' );
>
> > > var $validate = array(
>
> > > 'email' => array(
> > > 'required' => array(
> > > 'rule' => 'email',
> > > 'required' => true,
> > > 'message' => 'Ingrese una dirección de
> > > e-mail válida'
> > > )
> > > ),
>
> > > 'password' => array(
> > > 'required' => array(
> > > 'rule' => VALID_NOT_EMPTY,
> > > 'message' => 'Debe indicar su contraseña'
> > > )
> > > ),
>
> > > 'company_id' => array(
> > > 'required' => array(
> > > 'rule' => VALID_NOT_EMPTY,
> > > 'message' => 'Seleccione una empresa'
> > > )
> > > ),
>
> > > 'group_id' => array(
> > > 'required' => array(
> > > 'rule' => VALID_NOT_EMPTY,
> > > 'message' => 'Seleccione el grupo al que
> > > pertenece el usuario'
> > > )
> > > ),
>
> > > // campo adicional para confirmar la contraseña, no
> > > existe en la
> > > BBDD
> > > 'password_conf' => array(
> > > 'required' => array(
> > > 'rule' => VALID_NOT_EMPTY,
> > > 'message' => 'Debe confirmar su
> > > contraseña'
> > > )
> > > )
>
> > > );
>
> > > }
> > > ?>
>
> > > Users controller
> > >
> > > -------------------------------------------------------------------------------------
> > > <?php
>
> > > class UsersController extends AppController{
>
> > > var $name = 'Users';
> > > var $paginate = array( 'limit' => 15, 'page' => 1 );
>
> > > function control_view() {
> > > ..........
> > > }
>
> > > function control_edit( $id = null ) {
> > > // protección por tipo de admin
>
> > > // inicialización
> > > $this->layout = 'default';
>
> > > // datos necesarios
> > > $companies = $this->User->Company->find( 'list' );
> > > $this->set('companies', $companies );
>
> > > $groups = $this->User->Group->find( 'list' );
> > > $this->set('groups', $groups );
>
> > > // si no se ha enviado el formulario carga el ID del
> > > registro a
> > > editar
> > > if ( empty( $this->data ) ) :
> > > $this->User->id = $id;
> > > $this->data = $this->User->read();
> > > else :
> > > // si se ha enviado y valida guarda los datos
> > > if ( $this->User->create($this->data) &&
> > > $this->User-
> > > >validates() ) :
>
> > > // encripta la contraseña si se está
> > > insertando
> > > if ( empty( $id ) ) :
> > > $this->data['User']['password'] =
> > > md5( $this->data['User']
> > > ['password'] );
> > > endif;
>
> > > if( $this->User->save(
> > > $this->data['User'] ) ) :
> > > $this->redirect('view');
> > > endif;
>
> > > endif;
> > > endif;
>
> > > }
>
> > > function control_delete( $id = null ) {
> > > ......................
> > > }
>
> > > function control_changepassword( $id = null ) {
> > > // protección por tipo de admin
> > > if ( $this->Session->read('Administrator.superadmin') !=
> > > 1 ) : $this-
> > > >redirect('/control/'); endif;
>
> > > // inicialización
> > > $this->layout = 'default';
>
> > > // inicialización variables
> > > $this->set('passwords_match_error', 0 );
>
> > > // si no se ha enviado el formulario carga el ID del
> > > registro a
> > > editar
> > > if ( empty( $this->data ) ) :
> > > $this->User->id = $id;
> > > $this->data = $this->User->read();
> > > // dejo en blanco la contraseña para permitir
> > > cambiarla
> > > $this->data['User']['password'] = '';
> > > else :
> > > // no se porqué, pero debo cargarle aunque sea un
> > > valor del
> > > registro al array data para que funcione la validación
> > > $pp = $this->User->read( null, $id );
> > > $this->data['User']['email'] =
> > > $pp['User']['email'];
>
> > > // si se ha enviado y valida guarda los datos
> > > if ( $this->User->create( $this->data['User'] )
> > > && $this->User-
> > > >validates() ) :
> > > // si estoy editando
> > > if ( !empty( $id ) ) :
> > > // si los campos coinciden guardo
> > > la nueva contraseña y
> > > redirecciono
> > > if (
> > > $this->data['User']['password'] == $this->data['User']
> > > ['password_conf'] ) :
> > > // encripta la contrasña
> > >
> > > $this->data['User']['password'] = md5( $this->data['User']
> > > ['password'] );
> > > // guarda la contraseña
> > > if( $this->User->save(
> > > $this->data['User'] ) ) :
> > >
> > > $this->redirect('view');
> > > endif;
>
> > > else:
> > > // guarda el error
> > >
> > > $this->set('passwords_match_error', 1);
> > >
> > > $this->set('passwords_match_error_msg', __('Las contraseñas
> > > introducidas no coinciden. Por favor inténtelo nuevamente.', true) );
> > > endif;
>
> > > else:
> > > $this->redirect('view');
> > > endif;
> > > endif;
>
> > > endif;
> > > }
>
> > > }
> > > ?>
>
> > > Users changepassword view
> > >
> > > -------------------------------------------------------------------------------------
> > > <div id="sidebar" class="floatLeft">
> > > <h3><?php echo __('Ayuda'); ?></h3>
> > > <p><?php echo __('En esta sección podrá crear y administrar los
> > > usuarios de la aplicación.'); ?></p>
> > > <p> </p>
> > > <h3><?php echo __('Asistencia técnica'); ?></h3>
> > > <p><?php echo __('Si encuentra algún problema con la aplicación,
> > > comuníquese con'); ?> <a href="mailto:<?php echo
> > > __('#webmaster_mail'); ?>"><?php echo
>
> ...
>
> leer más »
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Cake
PHP" group.
To post to this group, send email to cake-php@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/cake-php?hl=en
-~----------~----~----~----~------~----~------~--~---