2012-03-02 12 views
7

जब विचारों/scripts/ अंदर मेरे विचारों/सहायकों में एक समारोह/ फ़ाइल, मेरी स्क्रिप्ट से फोन कर रहा, मैं इस त्रुटि मिलती है:Zend फ्रेमवर्क - प्लगइन नाम से रजिस्ट्री में नहीं मिला था

Message: Plugin by name 'SetBlnCompany' was not found in the registry; used paths: My_View_Helper_: /www/zendserver/htdocs/development/application/views/helpers/ Zend_View_Helper_: Zend/View/Helper/:/www/zendserver/htdocs/development/application/views/helpers/

bootstrap.php

protected function _initConfig() 
{  
    Zend_Registry::set('config', new Zend_Config($this->getOptions())); 
    date_default_timezone_set('America/Chicago'); 
} 

protected function _initAutoload() {  
    $autoloader = new Zend_Application_Module_Autoloader(array(    
     'namespace' => 'My',    
     'basePath' => dirname(__FILE__),  
    )); 
    return $autoloader; 
} 

application.ini

resources.view.helperPath.My_View_Helper = APPLICATION_PATH "/views/helpers" 

आवेदन/विचारों/सहायकों/DropdownHelper.php

class Zend_View_Helper_Dropdownhelper extends Zend_View_Helper_Abstract 
{ 
    public $blnCompany = false; 

    public function getBlnCompany() { 
     return $this->blnCompany; 
    } 

    public function setBlnCompany($blnCompany) { 
     $this->blnCompany = $blnCompany; 
    } 
} 

स्क्रिप्ट के कारण त्रुटि

<?php 
    $this->setBlnCompany(true); 
    //...etc... 
?> 

ईडीआई मेरी पोस्ट में अधिक पृष्ठभूमि जानकारी जोड़ने के लिए टी।

आदर्श रूप से मैं इस "ड्रॉपडाउन सहायक" वर्ग का उपयोग करता हूं, "जावास्क्रिप्ट प्राप्त करने" के लिए एक फ़ंक्शन "HTML प्राप्त करने" के लिए एक फ़ंक्शन रखने के लिए, और getHtml से पहले विकल्पों को सेट करने के लिए कई सेटर फ़ंक्शन और जावास्क्रिप्ट को कॉल किया जाता है।

+0

बस एफवाईआई, जो भी कक्षाएं आप जेएफएफ का हिस्सा नहीं हैं, उन्हें 'Zend_' से शुरू नहीं होना चाहिए। यह किसी को लगता है कि आपका व्यू हेल्पर वास्तव में जेडएफ में बनाया गया है और ऑटोलोडर के लिए अतिरिक्त लुकअप जोड़ता है। नोट: महत्वपूर्ण: कोड जो ज़ेंड फ्रेमवर्क लाइब्रेरीज़ के साथ तैनात किया जाना चाहिए लेकिन मानक या अतिरिक्त पुस्तकालयों का हिस्सा नहीं है (उदाहरण के लिए ज़ेंड द्वारा वितरित नहीं किए गए एप्लिकेशन कोड या पुस्तकालय) को कभी भी "ज़ेंड_" या "ज़ेंडएक्स _" से शुरू नहीं होना चाहिए। देखें [ज़ेंड फ्रेमवर्क - नामकरण सम्मेलन] (http://framework.zend.com/manual/en/coding-standard.naming-conventions.html) – drew010

उत्तर

8

आपके सहायक के पास आपकी विधि से समान नाम होना चाहिए। Zend_View_Helper_DropdownhelperZend_View_Helper_GetBlnCompany में बदलें और यह काम करेगा। अपने फ़ाइल नाम भी बदलने के लिए मत भूलना: GetBlnCompany.php

आदेश एक प्रॉक्सी विधि का उपयोग करने के लिए, आप बस return $this; की जरूरत है:

// /application/views/helpers/helpers/GetBlnCompany.php 
class Zend_View_Helper_GetBlnCompany extends Zend_View_Helper_Abstract 
{  
    public function getBlnCompany() 
    { 
     return $this; 
    } 

    public function fooBar($blnCompany) 
    { 
     return ucfirst($blnCompany); 
    } 
} 

उसके बाद, आप अपने दृश्य को सहायक के रूप में कॉल करने की आवश्यकता अनुसरण करें:

$this->getBlnCompany()->fooBar('google'); 
//return "Google" 
+0

तो एक सहायक के पास केवल एक सार्वजनिक रूप से उपयोग करने योग्य फ़ंक्शन हो सकता है? – adam

+0

नहीं, आप प्रॉक्सी फ़ंक्शन का भी उपयोग कर सकते हैं, मुझे अपना जवाब संपादित करने दें। – Liyali

+0

धन्यवाद। आदर्श रूप से मैं इस "ड्रॉपडाउन सहायक" वर्ग का उपयोग "जावास्क्रिप्ट प्राप्त करने" के लिए एक फ़ंक्शन "HTML प्राप्त करने" के लिए एक फ़ंक्शन रखने के लिए करता हूं, और getHtml से पहले विकल्प सेट करने के लिए कई सेटटर फ़ंक्शंस और getJavascript कहलाता है। – adam