我使用CakePHP 2.6,我有這樣一個場景,我要更新的數據庫表列「last_request」每當當前的loggedIn用戶打到網站的任何網址。 我是cakephP的新手,請告訴我可以在哪裏實現公共代碼(例如:組件等),以便所有請求都可以在不從每個功能或控制器調用特定代碼的情況下進行管理。 謝謝。CakePHP的添加常用代碼爲每個請求
1
A
回答
1
回答@戴夫認爲,可能是最好的解決方案,並解答@Ayaou給從代碼重複的可能性,效果很好開。
我想分享的是這些東西可以通過Authorization在 AppController中完成。
public function isAuthorized($user)
{
$userTable = ClassRegistry::init('User');
$data = ['last_request' => $last_request_data];
$userTable->id = $user['id'];
$userTable->save($data);
}
同樣的事情也可以用afterFilter來完成。
-2
你可以做到這一點在你的表相關的Model
我這裏假設表名是users
<?php
class User extends AppModel{
public function updateLastHit($id, $value){
$lastID = $this->id;
$this->id = $id;
$result = $this->saveField('last_hit', $value);
$this->id = $lastID;
return $result;
}
}
然後調用此功能時,控制器動作邏輯已經完成,afterFilter
是使用適當的方法
從AppController
例如
public function afterFilter(){ // afterRender
//Set the variable $value
$userModel = ClassRegistry::init('User');
$userModel->updateLastHit($this->Auth->user('id'), $value);
}
2
你要的afterFilter()
方法添加到您的AppController。 (details here)
後過濾器:每個控制器動作後調用,以及渲染完成後。這是最後一個要運行的控制器方法。
如果您希望代碼更早更新或者其他Request-Lifcycle callbacks之一,您可以選擇使用beforeFilter()。
然後,您可以添加在您的用戶模型的方法,將你想要做什麼(與last_request
場更新用戶的行)。
在後過濾器()方法,確保用戶模型加載,然後調用它的方法。在每次請求之後,afterFilter將被觸發,並且模型的代碼將被運行。
相關問題
- 1. 每個請求代碼
- 2. 在每個HTTP請求添加常用參數
- 3. 爲每個枚舉器添加代碼
- 4. PHPUnit:每個請求404代碼
- 5. 對每個請求執行代碼
- 6. 在每個請求上執行代碼
- 7. 使用.htaccess爲每個請求添加一個標頭
- 8. jquery ajax - 爲每個ajax請求添加一個通用參數
- 9. 適用於Android的Spring:爲每個請求添加get參數
- 10. 請求:如何爲每個請求設置用戶代理?
- 11. 爲每個HTTP請求添加自定義用戶代理的標頭
- 12. 爲每個請求
- 13. 爲每個請求
- 14. 爲ASP.NET的每個請求(aspx和cshtml)執行一些代碼
- 15. 如何在nginx中爲每個請求添加一個變量?
- 16. 爲REST API中的每個請求添加一些信息
- 17. 如何爲每個請求(或線程)添加不同的代理到scrapy
- 18. Python請求表單數據爲每個請求添加內容長度
- 19. 爲每個請求加載XML
- 20. IIS - 爲每個請求執行腳本/代碼片段
- 21. 將HTTP請求代碼轉換爲HTTPS請求代碼
- 22. 添加在Symfony2中的每個請求上調用的函數
- 23. 爲每個請求添加標題並重定向
- 24. 爲每個JMeter HTTP請求添加會話ID
- 25. Servicestack請求爲每個查詢添加參數
- 26. 與HttpUrlConnection自定義WebViewClient - 爲每個請求(WebView)添加標頭
- 27. 爲每個請求ASP.NET
- 28. 添加每個http請求都會增加的計數器
- 29. 爲http請求添加NameValuePair
- 30. 每個CakePHP 1.3頁面請求的高httpd.exe用法
這是一個很好的解決方案,取決於項目需求,但除非我錯了,只會觸發尚未「允許」的行動,而不是像OP要求的「全部」行爲。只是讓人們記住的東西。但我喜歡這個問題作爲解決這個問題的答案,因爲它肯定可以幫助未來的開發者,我相信這是一些人想要使用的東西。 – Dave
是啊非常感謝。 – Aamir