क्या यह देखने का कोई तरीका है कि कोई तत्व देखने के लिए मौजूद है या नहीं? मैं एक वर्ग वह जुड़ी है लेकिन सभी श्रेणियों के लिए यह एक तत्व है के अनुसार एक अलग तत्व लोड करना चाहते हैं ... नियंत्रक मेंकेकफ़्पी: जांचें कि दृश्य तत्व मौजूद है
उत्तर
CakePHP संस्करण 2.3 आप देखें के elementExists
विधि का उपयोग कर सकते हैं के रूप में:
if($this->elementExists($name)) { ... }
2.x के पुराने संस्करणों में आप कर सकते हैं:
if($this->_getElementFilename($name)) { ... }
लेकिन दुर्भाग्य से संस्करण 1.3 में यह कैसा दिखता एकमात्र तरीका पूर्ण पथ को जानना और कुछ ऐसा करना है:
if(file_exists($path . 'elements' . DS . $name . $ext)) { ... }
टी टोपी वह है जो वे 1.3 स्रोत कोड में करते हैं, लेकिन विभिन्न प्लगइन से $path
प्राप्त करने और उन सभी पथों की जांच करने के आसपास कुछ जटिलता है। (नीचे दिए गए लिंक देखें।)
सूत्रों का कहना है:
http://api.cakephp.org/2.3/class-View.html#_elementExists
सेट तत्व नाम:
$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;
}
तुम हमेशा एक तत्व लोड कर सकते हैं नियंत्रक से ऐसा कहकर एक मांग 'ऑन डिमांड' के लिए विशिष्ट। उदाहरण के लिए:
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);
}
?>
वास्तव में, इस लक्ष्य को हासिल करने के लिए भी अन्य तरीकों से होती है। यदि तत्व को लेआउट के भीतर लोड किया जा रहा है, तो ऊपर दिखाए गए सेट() विधि को दृश्य से ही निर्दिष्ट किया जा सकता है। या, यह भी, 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. जांचें कि तत्व मौजूद है
- 2. as3 xml जांचें कि तत्व मौजूद है
- 3. जांचें कि क्या XML तत्व मौजूद है
- 4. जांचें कि संसाधन मौजूद है
- 5. जांचें कि तालिका मौजूद है
- 6. जांचें कि तत्व DIV
- 7. सी ++ जांचें कि तत्व सरणी
- 8. jQuery जांचें कि ऑनक्लिक तत्व
- 9. जांचें कि NSUserDefaults मौजूद हैं
- 10. हाइबरनेट: जांचें कि ऑब्जेक्ट मौजूद है
- 11. जांचें कि कोई फॉर्म इनपुट मौजूद है
- 12. जावा जांचें कि सरणी [] आइटम मौजूद है
- 13. पोस्टग्रेस्क्ल: जांचें कि क्या स्कीमा मौजूद है?
- 14. जांचें कि फ़ाइल मौजूद है या नहीं,
- 15. जांचें कि क्या jQuery विधि मौजूद है
- 16. जांचें कि कोई SQL तालिका मौजूद है
- 17. केकफ़्प जांचें कि रिकॉर्ड मौजूद है
- 18. जांचें कि क्या रजिस्ट्री कुंजी मौजूद है
- 19. MySQL php: जांचें कि पंक्ति मौजूद है
- 20. बिटवाइज जांचें कि क्या ध्वज मौजूद है
- 21. knockout जेएस - जांचें कि संपत्ति मौजूद है
- 22. जांचें कि एक्सेस तालिका मौजूद है
- 23. जांचें कि छवि मौजूद है php
- 24. जांचें कि जावा में enum मौजूद है
- 25. पीडीओ/पीएचपी - जांचें कि पंक्ति मौजूद है
- 26. जांचें कि क्या सत्र मौजूद है JSF
- 27. जांचें कि कोई webservice मौजूद है
- 28. रैवेनडीबी जांचें कि सूचकांक मौजूद है
- 29. jQuery: जांचें कि छवि मौजूद है
- 30. जांचें कि कोई वर्ग मौजूद है
मैं नियंत्रक से इस फोन की कोशिश की लेकिन संस्करण 2.4 –
@MohamadAli 'elementExists लिए काम नहीं कर() 'एक व्यू विधि है इसलिए नियंत्रक से नहीं बुलाया जाना चाहिए। – drmonkeyninja
@drmonkeyninja मुझे प्रतिपादन दृश्य से पहले जांच करने की आवश्यकता है मैं इसे नियंत्रक से कैसे देख सकता हूं? वर्तमान में मैं कोशिश/पकड़ –