Simplemente agrega el dato en el beforeSave() de tu modelo:

class NomberModelo extends AppModel
{
        var $name = 'NomberModelo';

        function beforeSave()
        {
                if (!isset($this->data['created_by']))
                {
                        $valor = 'Mariano Iglesias';

                        $this->data['created_by'] = $valor;
                }
        }
}

Ahora como tu dato sale de la sesión, en tu modelo *NO* vas a poder (o no
debieras) usar el componente Session. Hay diferentes alternativas, yo en
este caso lo que haría es usar Configure. En mi AppController, en el
beforeFilter haría algo así:

function beforeFilter()
{
        if ($this->Session->check('User.username'))
        {
                Configure::write('App.user',
$this->Session->read('User.username'));
        }

        return parent::beforeFilter();
}

Y luego el beforeSave() anterior lo cambiaría:

class NomberModelo extends AppModel
{
        var $name = 'NomberModelo';

        function beforeSave()
        {
                if ((!isset($this->data['created_by']) ||
empty($this->data['created_by'])) && Configure::read('App.user') != null)
                {
                        $this->data['created_by'] =
Configure::read('App.user');
                }
        }
}

Se podría simplificar con variables globales pero prefiero toda la vida usar
Configure, que es más OOP y persigue este propósito.

Luego de hacer esto cuando hagas:

$this->NomberModelo->save($this->data);

Si el usuario existe (es decir si en la sesión hay un valor con clave
User.username), y si en $this->data NO LE especificaste el campo
"created_by" (esto para evitar sobrescribir el valor si vos lo querés setear
manualmente), entonces el modelo automáticamente le asignaría al campo
"created_by" el usuario en la sesión.

-MI

---------------------------------------------------------------------------

Remember, smart coders answer ten questions for every question they ask. 
So be smart, be cool, and share your knowledge. 

BAKE ON!

blog: http://www.MarianoIglesias.com.ar


-----Mensaje original-----
De: [email protected] [mailto:[EMAIL PROTECTED] En
nombre de carlosrg
Enviado el: Jueves, 08 de Marzo de 2007 12:45 p.m.
Para: CakePHP-es
Asunto: Añadir campo usuario en tablas

Si se añade el campo 'created' y/o 'modified' en las tablas, Cake a la
hora de añadir o guarda un registro, te actualiza ambos campos.

Cual es la mejor forma de hacer lo mismo pero con un nuevo campo, en
mi caso, created_by?

Lo que hacía era, crear el campo 'created_by' en las tablas que me
interesaran y luego añadir en los métodos del controlador, la
siguiente línea:

$this->NomberModelo->set('created_by', $this->Session-
>read('User.username'));

Es una forma correcta de hacerlo? Es que eso de tenerlo que repetir en
cada método...


--~--~---------~--~----~------------~-------~--~----~
Has recibido este mensaje porque estás suscrito a Grupo "CakePHP-es" de Grupos 
de Google.
 Si quieres publicar en este grupo, envía un mensaje de correo 
electrónico a [email protected]
 Para anular la suscripción a este grupo, envía un mensaje a [EMAIL PROTECTED]
 Para obtener más opciones, visita este grupo en 
http://groups.google.com/group/CakePHP-es?hl=es.

-~----------~----~----~----~------~----~------~--~---

Responder a