2011-01-15 12 views
9

मैं सीख रहा हूं कि ज़ेंड फ्रेमवर्क का उपयोग कैसे करें और यह समझें कि एक्शन हेल्पर कुछ ऐसा उपयोगी होगा। मैंने अपनी मशीन पर ज़ेंड की एक डिफ़ॉल्ट स्थापना स्थापित की है, लेकिन मुझे नहीं पता कि सहायक फ़ाइल कहां जाना है, मुझे बूटस्ट्रैप फ़ाइल में क्या रखना है और मैं इसका उपयोग कैसे करता हूं। क्या कोई मुझे सही दिशा में इंगित कर सकता है - जेडएफ उपयोगकर्ता गाइड मुझे साफ़ नहीं करना है।ज़ेंड एक्शन हेल्पर

धन्यवाद जॉन

उत्तर

16

जहां अपने कस्टम कार्रवाई सहायकों जगह के लिए दो विचार: एक अलग, कस्टम पुस्तकालय

  • में

    1. फ़ोल्डरमें

    ये विचार अनन्य नहीं हैं। कार्यक्षमता जो कि कई परियोजनाओं में काम करने के लिए सामान्य है, शायद एक अलग पुस्तकालय में खींचा जाना चाहिए। लेकिन कार्यक्षमता के लिए जो अनुप्रयोग-विशिष्ट है, वहां एक तर्क है कि यह application फ़ोल्डर में कहीं भी हो सकता है।

    @ जूरियन ने पहले से ही "अलग-पुस्तकालय" दृष्टिकोण का वर्णन किया है। ऐप-विशिष्ट हेल्पर्स के लिए, आप निम्नानुसार कर सकते हैं:

    myHelper नामक एक सहायक के लिए, application/controllers/helpers/MyHelper.php फ़ाइल में Application_Controller_Helper_MyHelper कक्षा बनाएं।

    protected function _initAutoload() 
    { 
        $autoloader = new Zend_Application_Module_Autoloader(array(
         'namespace' => 'Application', 
         'basePath' => APPLICATION_PATH, 
        )); 
    
        Zend_Controller_Action_HelperBroker::addPath(
         APPLICATION_PATH . '/controllers/helpers', 
         'Application_Controller_Helper_'); 
    
        return $autoloader; 
    } 
    

    फिर अपने सहायक एक नियंत्रक में लागू किया जा सकता है का उपयोग करके:

    $this->_helper->myHelper; 
    

    आप देख सकते हैं, इस मान लिया जाता है आप appNamespace 'आवेदन' का उपयोग कर रहे Bootstrap में, आप की तरह कुछ है। यदि नहीं, तो आप अपने परिस्थिति को समायोजित करने के लिए अपने वर्ग के नामों को संशोधित (आवश्यक!) कर सकते हैं।

    चीयर्स!

  • +0

    छोटा नोट, चूंकि आप 'APPLICATION_PATH' के साथ पथ शुरू कर रहे हैं, इसलिए आपके'/एप्लिकेशन/नियंत्रक/हेल्पर्स 'शुरुआत में '/ application' के बिना' नियंत्रक/सहायक 'होना चाहिए। साथ ही मुझे यह भी पता चला है कि उपसर्ग 'Application_Controller_Helper_'' को भौतिक फ़ोल्डर संरचना से मेल खाना जरूरी नहीं है। यदि आप उपसर्ग (दूसरा पैरामीटर) को 'Blabla_' के रूप में सेट करते हैं, तब तक जब तक एक्शन हेल्पर कक्षाएं केवल' Blabla_Helpername' के साथ शुरू होती हैं, यह काम करती है। इससे कक्षा के नामों में कटौती करने में मदद मिलती है यदि यह आपके लिए महत्वपूर्ण है। और निश्चित रूप से एक अच्छे जवाब के लिए +1। – jblue

    +0

    डी ओह! आप सही हैं: 'application' पथ पहले से ही APPLICATION_PATH में शामिल है। माफ़ कीजिये। मेरा जवाब सुधारना इसके अलावा, निश्चित रूप से आप सही हैं: चूंकि आप 'addPath()' कॉल में मैपिंग को परिभाषित कर सकते हैं, तो आप अपने इच्छित लगभग किसी भी नामनाम का उपयोग कर सकते हैं। मैं अपनी लाइब्रेरी नेमस्पेस में ज़ेंड संरचना की नकल करता हूं, भले ही वे थोड़े लंबे हों। उदाहरण के लिए, मैं आमतौर पर 'My_Controller_Plugin_SomePlugin' के रूप में एक प्लगइन का नाम देता हूं, लेकिन मैं अक्सर दूसरों को' My_Plugin_SomePlugin' जैसे कुछ उपयोग करता हूं। जैसा कि आप देखते हैं, तब तक कोई भी तरीका तब तक काम करता है जब तक आपका 'एडपैथ()' कॉल सही तरीके से मानचित्र करता है। धन्यवाद और जयकार! ;-) –

    6

    आप अपनी खुद की लाइब्रेरी में कार्रवाई सहायकों रख सकते हैं। पुस्तकालय/ज़ेंड के अलावा जहां सभी ज़ेंड सामान आसपास हैं, आप एक लाइब्रेरी/MyLibrary फ़ोल्डर बना सकते हैं (MyLibrary मनमाने ढंग से चुना गया है) और वहां एक्शन हेल्पर्स डालें।

    एक अच्छी जगह लाइब्रेरी/MyLibrary/नियंत्रक/एक्शन/हेल्पर फ़ोल्डर है जिसे आपको अपने एक्शन हेल्पर बनाने या रखने के लिए आवश्यक है (यानी Navigation.php)। इस फ़ाइल में, वर्ग MyLibrary_Controller_Action_Helper_Navigation बनाएं।

    अगला चरण बूटस्ट्रैप के दौरान ज़ेंड फ्रेमवर्क के हेल्पर ब्रोकर में एक्शन हेल्पर जोड़ना है। इसलिए, इस समारोह अपने Bootstrap.php फ़ाइल में एक नई विधि बना सकते हैं और जोड़ें:

    protected function _initActionHelpers() 
    { 
        Zend_Controller_Action_HelperBroker::addHelper(
         new MyLibrary_Controller_Action_Helper_Navigation() 
        ); 
    } 
    

    एक आखिरी टिप्पणी आप अपने application.ini में इस नियम से जोड़कर इस पुस्तकालय के उपयोग विन्यस्त करने की जरूरत है:

    autoLoaderNameSpaces[] = "MyLibrary_" 
    
    1

    आप की तरह तो

    resources.view[] = 
    resources.view.helperPath.Default_View_Helper_ = APPLICATION_PATH "/views/helpers/" 
    

    फिर अपने views/helpers रास्ते में आप एक फ़ाइल Time.php की तरह बना सकते हैं अपने application.ini फ़ाइल के माध्यम से ऐसा कर सकते हैं।इस फ़ाइल में निम्न कोड शामिल होगा:

    <?php 
    
    class Default_View_Helper_Time extends Zend_View_Helper_Abstract 
    { 
        public function time() 
        { 
         $date = new Zend_Date(); 
    
         return $date->get(Zend_Date::TIME_MEDIUM); 
        } 
    } 
    
    ?> 
    

    आपके विचार लिपियों में इस का उपयोग करने के लिए आप का प्रयोग करेंगे

    <?=$this->time()?> 
    

    कौन सा वर्तमान समय प्रदर्शित का उपयोग कर अपनी नई View_Helper

    +0

    -1 ओप एक्शन हेल्पर्स के बारे में बात कर रहा है, मददगार नहीं देखिए – jackocnr

    +0

    हाय मैं अपने एप्लिकेशन नियंत्रक सहायक पर दृश्य सहायक कैसे कॉल कर सकता हूं ..? – d3bug3r

    0

    आप होने से बचने कर सकते हैं के भीतर application.ini में उन्हें घोषित करके अपने एक्शन हेल्पर नेमस्पेस और पथ को पंजीकृत करने के लिए:

    resources.frontController.actionHelperPaths.My_Controller_Action_Helper = APPLICATION_PATH "/controllers/helpers" 
    

    बस वांछित नेमस्पेस के साथ My_Controller_Action_Helper को प्रतिस्थापित करें, और तदनुसार हेल्पर्स निर्देशिका पथ को संशोधित करें।

    सहायक उसी तरह प्रारंभ किया जा सकता है:

    $this->_helper->myHelper; 
    

    डॉक्स द्वारा उल्लेख किया है, उपसर्ग या सहायकों के रास्ते दर्ज की आम तौर पर पसंद किया जाता है क्योंकि सहायकों आरंभ नहीं किया जा जाएगा, जब तक वे में की तरह कहा जाता है ऊपर स्निपेट।

    बेशक

    , instantiating और दलाल को सहायकों गुजर थोड़ा समय है और गहन संसाधन है, तो दो तरीकों बातें थोड़ा स्वचालित करने के लिए मौजूद है: addPrefix() और addPath()।

    http://framework.zend.com/manual/1.12/en/zend.loader.pluginloader.html

    application.ini को config प्रविष्टि जोड़ना एक ही सुझाव दिया पद्धति का अनुसरण करता।

    संबंधित मुद्दे