有沒有辦法檢查視圖中是否存在元素? 我想根據它屬於但不是所有的類別都爲它的元素的類加載不同的元素......在控制器Cakephp:檢查是否存在視圖元素
7
A
回答
9
由於CakePHP的2.3,你可以使用視圖的elementExists
方法版本:
if($this->elementExists($name)) { ... }
在舊版本2.x的,你可以這樣做:
if($this->_getElementFilename($name)) { ... }
但可悲的是1.3版本中,它看起來像唯一的辦法是知道完整的路徑,並做類似的事情:
if(file_exists($path . 'elements' . DS . $name . $ext)) { ... }
T帽子是他們在1.3源代碼中所做的,但是從各種插件獲取$path
並檢查每個路徑會有一些複雜性。 (請參見下面的鏈接)。
來源:
http://api.cakephp.org/2.3/class-View.html#_elementExists
2
組元素名稱:
$default_element = 'my_element';
$element = 'my_cat_element';
if ($this->theme) {
$element_path = APP . 'views' . DS . 'themed' . DS . $this->theme . 'elements' . DS . $element . DS . $this-ext;
} else {
$element_path = APP . 'views' . DS . 'elements' . DS . $element . $this-ext;
}
if (!file_exists($element_path)) {
$element = $default_element;
}
0
您可以隨時加載元素特定於「按需」類別,通過從控制器中告知。例如:
Within Controller Action:
$this->set('elementPath', "directory_name/$categoryName");
Within the View (this can also be tried exactly within a Layout):
<?php
if (!empty($elementPath)) { // you can also set a default $elementPath somewhere else, just in case
echo $this->element($elementPath);
}
?>
事實上,甚至有其他的方式來實現這一目標。如果要在佈局內加載元素,則可以從視圖本身指定上面顯示的set()方法。或者,它甚至可以從URL參數獲取,如:
Within the View or Layout:
<?php
$elementPath = $this->params['url']['category']; // note that the param array can vary according how you set the url; see http://book.cakephp.org/#!/view/963/The-Parameters-Attribute-params
echo $this->element($elementPath);
?>
當然,你總是必須指定,但同樣會去的,如果該文件存在檢查。
相關問題
- 1. 檢查圖像是否存在cakephp
- 2. Objective C檢查網頁視圖中是否存在元素
- 3. 如何檢查元素是否存在於Cakephp 3中?
- 4. 檢查ListViewItemCollection元素是否存在
- 5. JAXB - 檢查是否存在子元素
- 6. 檢查根元素是否存在
- 7. 檢查mongodB中是否存在元素
- 8. 檢查Selenium中是否存在元素
- 9. 如何檢查元素是否存在?
- 10. 檢查數組元素是否存在
- 11. 檢查元素是否存在
- 12. 檢查ArrayList元素是否存在
- 13. 檢查NSMutableArray元素是否存在
- 14. 檢查一個元素是否存在
- 15. 如何檢查元素是否存在?
- 16. 檢查XPath是否存在元素
- 17. jQuery檢查元素是否存在onClick
- 18. 檢查DOM中是否存在元素
- 19. 檢查數組元素是否存在
- 20. 檢查表單元素是否存在
- 21. 檢查元素是否存在
- 22. 檢查DIV內是否存在元素
- 23. as3 xml檢查元素是否存在
- 24. 如何檢查視圖是否存在?
- 25. 如何檢查視圖是否存在?
- 26. 檢查活動是否存在視圖
- 27. 如何檢查CakePHP是否存在Model?
- 28. Cakephp檢查模型是否存在
- 29. Cakephp檢查是否存在記錄
- 30. 檢查父元素中是否存在元素
我試圖從控制器調用此但不工作的版本2.4 – 2015-07-01 11:32:29
@MohamadAli'elementExists() '是一個View方法,所以不應該從控制器調用。 – drmonkeyninja 2015-07-02 11:47:20
@drmonkeyninja我需要檢查渲染視圖之前如何從控制器檢查它?目前我使用try/catch – 2015-07-03 14:02:46