¿Hay alguna forma de acceder a la sesión actual en la clase AppModel
?
Quiero guardar el ID del usuario que ha iniciado sesión actualmente en casi todas las acciones INSERT/UPDATE.Acceso a la sesión en el modelo
Respuesta
encontrado una solución de trabajo para CakePHP 2 aquí: Reading a session variable inside a behavior in cakephp 2
Esta es mi AppModel:
<?php
class AppModel extends Model {
public function beforeSave() {
parent::beforeSave();
if (isset($this->_schema['user_id'])) {
// INSERT
if (!strlen($this->id)) {
App::uses('CakeSession', 'Model/Datasource');
$user_id = CakeSession::read('Auth.User.id');
$this->data[$this->alias]['user_id'] = $user_id;
// UPDATE, don't change the user_id of the original creator.
} else {
unset($this->data[$this->alias]['user_id']);
}
}
return true;
}
}
Si llama salva de un controlador, usted podría incluir los datos de la sesión en los datos que se asigna a su modelo antes de la guarda:
$data['ModelName']['session_id'] = $this->Session->id;
$this->ModelName->save($data);
O bien, podría crear una variable en el modelo y almacenar el ID de allí para su uso posterior:
<?php
//in model
class MyModel extends AppModel{
public $session_id;
}
//in controller
$this->MyModel->session_id = $this->Session->id;
?>
Si debe utilizar el componente en el modelo, entonces usted puede ser capaz de cargarlo. No estoy seguro si esto funcionará bien. Esta no es una buena práctica y probablemente debas considerar hacerlo de otra manera.
<?php
App::uses('CakeSession', 'Model/Datasource');
class MyModel extends AppModel{
public function beforeSave(){
$this->data['session_id'] = $this->Session->id;
return true;
}
}
?>
En CakePHP 2.x puede utilizar AuthComponent estáticamente y obtener la revisión en línea Identificación del usuario en el modelo como este:
$userId = AuthComponent::user('id');
¡Guau! ¡Suena bien! – powtac
- 1. rieles: el acceso. Sesión del usuario actual en un modelo (
- 2. cómo acceder a la sesión en el modelo asp.net mvc
- 3. Confirmar el despliegue de Apache Passenger: sesión de acceso de rieles en el modelo
- 4. Acceso a carriles Rutas RESTful en el modelo
- 5. Acceso usuario_actual del desarrollador en el modelo
- 6. codeigniter modelo de acceso de la biblioteca
- 7. Acceso a current_user desde un modelo en Ruby on Rails
- 8. ¿Por qué Session.Evict en OnPostUpdate causa la excepción de "Posible acceso sin acceso a la sesión"?
- 9. RSpec acceso a spec_helper variable de sesión
- 10. Rails Rake Tarea: acceso a la clase de modelo
- 11. Acceso a la sesión de Hibernate desde EJB usando EntityManager
- 12. Acceso a la sesión de otra aplicación web
- 13. MVVM Modelo de acceso desde la vista
- 14. Acceso a atributos de sesión y conversión a int?
- 15. Acceso a los raíles flash [: aviso] en un modelo
- 16. PHP MVC Best Practice - Pasar la variable de sesión a la clase de modelo desde el controlador o acceder directamente en el modelo
- 17. Campos de acceso en el modelo intermedio de Django
- 18. atributo de Acceso Modelo en scriplet
- 19. modelo de acceso de la vista en codeigniter?
- 20. Diseñar antes del filtro que impide el acceso a "new_user_registration_path" a menos que el usuario haya iniciado sesión
- 21. Acceso a datos de sesión fuera de Joomla
- 22. acceso MVVM vista padre modelo desde dentro de la colección
- 23. Modelo de objetos componentes PHP "Acceso denegado"
- 24. Cómo iniciar sesión ID de sesión en el registro de acceso de WebLogic
- 25. restrinja el acceso a los archivos de imagen para usuarios que inician sesión solo en php
- 26. El acceso a la ruta **** está denegado
- 27. ¿Cómo restringir el acceso a phpmyadmin?
- 28. ¿Acceso de solo lectura a la sesión en una llamada al servicio web?
- 29. ¿Buena idea para acceder a la sesión en el observador o no?
- 30. acceso CanCan `puede` método de un modelo
Según mi tercera opción, simplemente porque usted puede hacer no significa que deberías. –