Có cách nào để truy cập phiên hiện tại trong lớp AppModel
không?
Tôi muốn lưu ID của người dùng hiện đã đăng nhập vào hầu hết mọi hành động INSERT/UPDATE.Truy cập phiên trong Mẫu
Trả lời
Tìm thấy một giải pháp làm việc cho CakePHP 2 ở đây: Reading a session variable inside a behavior in cakephp 2
Đây là AppModel tôi:
<?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;
}
}
Nếu bạn đang gọi tiết kiệm từ một bộ điều khiển, bạn chỉ có thể bao gồm các dữ liệu phiên trong các dữ liệu mà bạn gán cho mô hình của bạn trước khi tiết kiệm:
$data['ModelName']['session_id'] = $this->Session->id;
$this->ModelName->save($data);
Hoặc bạn có thể tạo một biến trong mô hình của bạn và lưu trữ ID ở đó để sử dụng sau:
<?php
//in model
class MyModel extends AppModel{
public $session_id;
}
//in controller
$this->MyModel->session_id = $this->Session->id;
?>
Nếu bạn phải sử dụng thành phần trong mô hình của mình thì bạn có thể tải nó. Tôi không chắc chắn nếu điều này sẽ làm việc mặc dù. Đây không phải là thực hành tốt và bạn có lẽ nên xem xét thực hiện nó theo một cách khác.
<?php
App::uses('CakeSession', 'Model/Datasource');
class MyModel extends AppModel{
public function beforeSave(){
$this->data['session_id'] = $this->Session->id;
return true;
}
}
?>
Trong CakePHP 2.x bạn có thể sử dụng AuthComponent tĩnh và nhận được đăng nhập ID của người dùng trong mô hình như sau:
$userId = AuthComponent::user('id');
Wow! Nghe hay đấy! – powtac
- 1. Truy cập phiên từ mẫu TWIG
- 2. ASP.NET: Truy cập phiên biến trong global.asax
- 3. Cách truy cập Phiên trong tệp .ashx?
- 4. truy cập biểu mẫu trong iframe
- 5. Biến phiên truy cập từ HTTPModule
- 6. Flask - Truy cập biến cấu hình trong mẫu
- 7. Chơi 2.0 truy cập để yêu cầu trong các mẫu
- 8. Truy cập vào phiên từ một spec helper trong rspec
- 9. Truy cập Phiên bản từ AssemblyInfo trong MSBuild
- 10. Cách truy cập biến phiên trong bộ điều khiển
- 11. Truy cập các phiên hoạt động trong PHP
- 12. Tôi làm cách nào để truy cập phiên trong webmethod?
- 13. Truy cập nhiều phiên bản của gói trong Java
- 14. cách truy cập phiên trong mô hình asp.net mvc
- 15. Phiên truy cập trong dịch vụ WCF từ WebHttpBinding
- 16. Cách truy cập phiên trong diễn đạt, bên ngoài req?
- 17. Trình quản lý không thể truy cập được qua các phiên bản mẫu
- 18. truy cập mô hình từ mẫu
- 19. Cách làm mới mẫu truy cập
- 20. Thay thế cho mẫu khách truy cập?
- 21. Mẫu khách truy cập cho các phiên bản const và nonconst của cây
- 22. Mẫu khách truy cập chung chung hơn
- 23. Truy cập các mảng song song trong các mẫu Django?
- 24. Khả năng truy cập trong xác thực biểu mẫu javascript
- 25. cách truy cập phần tử từ điển trong mẫu django?
- 26. Truy cập vào ngữ cảnh gốc trong mẫu Handlebar.js
- 27. "kiểm tra tạo phiên theo phiên" so với "kiểm toán tạo phiên bằng truy cập"?
- 28. Phiên Express + Góc: không thể truy cập cookie connect.sid
- 29. Cách truy cập phiên từ Kiểm tra tích hợp Rails?
- 30. Hibernate HQL chỉ truy cập bộ nhớ cache phiên
Theo tùy chọn thứ 3 của tôi, chỉ vì bạn có thể làm không có nghĩa là bạn nên. –