• Nerbiyos

    • Ads

    Sumulat ng iyong sariling Prestashop Module - Part 5

    Ang mga pagtatapos touches

    Panimula

    Sa huling bahagi ng aming mga pangunahing module serye pagsulat tutorial kami ay tumingin sa ang huling hakbang upang ibahin ang anyo ang aming Tutorialthird module klase sa isang base template na maaari naming gamitin upang sipain simulan ang pagsusulat ng mga bagong module. Kaysa sa ipa-publish muli ang parehong lumang code muli kami ay lamang-usapan ang mga pagbabago, ngunit ko na nagdagdag ng isang download link sa dulo ng bahagi na ito sa gayon maaari mong i-grab ang huling code at gamitin ito bilang batayan para sa iyong sariling proyekto. Kami ay pagpunta sa tawag ang module na ito na "buto" - isang pangalan na kami ay palitan sa ating sariling pagdating sa paggawa ng mga bagong module na batay ito.

    Styling ang configuration form

    Ang unang pagbabago na kami ay pagpunta sa gumawa ay panay kosmetiko, gayunpaman ito ay isang mahalagang elemento dahil gusto naming magbigay ng isang pare-parehong interface para sa aming mga gumagamit. Ang aming form code mukhang:

    	 pribadong function na _displayForm ()
    	 {
    		 $ Ito-> _html .= '
    		 <form action="'.$_SERVER['REQUEST_URI'].'" method="post">
    				 <label>. '$ ito-> l (' Mensahe sa mundo ang').'</ label>
    				 <div class="margin-form">
    
    					 <input type="text" name="our_message" />
    				 </ Div>
    				 <input type="submit" name="submit" value="'.$this-> l ('I-update').'" class = "button" />
    
    		 </ Form> ';
    	 }
    

    Ang convention para sa mga screen configuration ay upang wrap ang mga setting sa isang fieldset, at makikita din namin na kailangan upang magdagdag ng gandang friendly (maisasaling) alamat makumpleto sa icon. Ay ngayon tingnan ang aming code tulad ng:

    	 pribadong function na _displayForm ()
    	 {
    		 $ Ito-> _html .= '
    		 <form action="'.$_SERVER['REQUEST_URI'].'" method="post">
    
    			 <fieldset>
    				 <legend> <img src="../img/admin/cog.gif" alt="" class="middle" /> '. $ ito-> l (' Mga Setting').'</ legend>
    
    				 <label>. '$ ito-> l (' Mensahe sa mundo ang').'</ label>
    				 <div class="margin-form">
    					 <input type="text" name="our_message" />
    
    				 </ Div>
    			 <input type="submit" name="submit" value="'.$this-> l ('I-update').'" class = "button" />
    
    			 </ Fieldset>
    		 </ Form> ';
    	 }
    

    Ang aming huling kosmetiko baguhin ay upang magdagdag ng isang heading sa tuktok ng aming mga setting ng screen sakaling ang gumagamit ay nakalimutan kung saan ang mga ito! Namin ito sa pamamagitan ng pagdagdag ng sumusunod na linya sa simula ng ang getContent () function na:

     $ Ito-> _html .= '<h2>' $ ito-> displayName '</ h2>'.;
    

    Pre-populating mga patlang sa form ng configuration

    Isa pang nawawalang elemento mula sa aming mga orihinal na disenyo ng tutorial ay ang pagpapakita ng mga kasalukuyang setting sa form ng module configuration, at kahit na kapag ang form ay nagbabalik mula sa pag-update ng mga halaga ng mga patlang ay blangko, kaya kailangan namin upang ayusin ang glitch masyadong. Mayroong dalawang posibilidad na kailangan namin upang mahawakan:

    1. Paunang pagpapakita ng form ay dapat na ipakita ang kasalukuyang configuration (kung mayroon man)
    2. Pagkatapos ng isang update ng form ay dapat namin ipakita ang mga data na ipinasok ng gumagamit

    Maaari naming gamitin ang Configuration:: makakuha ng () function na upang makuha ang mga kasalukuyang mga setting mula sa database, at Tools:: getValue () upang makuha ang mga nilalaman ng patlang. Ang Tools:: getValue () function na tumatagal ng pangalawang parameter na kung saan ay kapaki-pakinabang sa konteksto na ito, bilang na ito tumutukoy ng isang "default" gamitin dapat ang patlang na walang laman. Maaari naming ngayon itakda ang "value" na katangian ng aming input tag angkop na gamit ng dalawang function na ito, kaya ang aming huling form input code ay:

     <input type="text" name="our_message" value="'.Tools::getValue('our_message', Configuration::get($this-> pangalan. '_message')).'"/>
    

    Isa pang kapaki-pakinabang na pagbabago sa gumawa kapag pakikitungo sa ilang mga patlang sa isang configuration para sa ay upang ilipat ang update ng database code sa ito ay sariling pribadong function na. Para sa namin palitan ang linya:

    
     kung (! sizeof ($ ito-> _postErrors))
    	 {
    		 Configuration:: updateValue ($ ito-> pangalan '_message', Tools::. GetValue ('our_message'), true);
    		 $ Ito-> _html .= '<div class="conf confirm">' $ ito-> l ('Mga Setting-update ang').'</ div>';
    	 }
    

    na may mga sumusunod:

     kung (! sizeof ($ ito-> _postErrors))
    	 $ Ito-> _postProcess ();
    

    At naming idagdag ang mga bagong miyembro ng pribadong function na ang aming klase upang panghawakan ang mga aktwal na mga update sa isang solong, madaling nakilala lokasyon:

    	 pribadong function na _postProcess ()
    	 {
    		 Configuration:: updateValue ($ ito-> pangalan '_message', Tools::. GetValue ('our_message'), true);
    
    		 $ Ito-> _html .= '<div class="conf confirm">' $ ito-> l ('Mga Setting-update ang').'</ div>';
    	 }
    

    Paghawak ng iba pang mga uri ng patlang

    Sa huling-download ng module ng balangkas na din ko na naidagdag na mga halimbawa ng iba pang mga uri ng mga patlang na kumilos bilang kapaki-pakinabang na mga shortcut sa paglikha ng iyong form ng pagsasaayos ng module. Ito ay sumasaklaw sa mga checkbox, radio button, textarea at drop-down na listahan. Ang kailangan mong gawin ay ang magdagdag / palitan ang pangalan ng ang mga patlang, magdagdag ng anumang pagpapatunay na kinakailangan upang ang _postValidation () function na at baguhin ang mga update na code sa ang _postProcess () function na naaangkop.

    Para sa mga sapilitan setting ay dapat mo ring subukan para sa kanilang presensya sa function na install at ang nararapat na hakbang upang pigilan ang iyong mga module na nagiging sanhi ng error sa Front Office halimbawa sa pamamagitan ng pagtatakda ng mga naaangkop na mga default na gamit ang Configuration:: updateValue () function na. Bilang kahalili ito ay maaaring gumanap sa constructor module, kahit na ito ay mas tama upang maisagawa ito sa loob ng install ().

    Pagdaragdag ng maramihang mga na lokasyon ng display Hooks

    Aming Tutorialthird module maaari lamang ipakita ang aming nilalaman sa kaliwang haligi dahil ito ay ang tanging hook na namin ipinapatupad. Sa kabutihang-palad ito ay napakadaling ipatupad ang "maglipat ng isang module" na BackOffice andar sa aming code. Sa pinakasimpleng form namin gamitin lamang ang parehong output sa lahat ng mga lokasyon, ngunit kung kinakailangan ang lahat ng mga karagdagang mga Hooks ng mga iba't ibang mga resulta.

    Upang gumawa ng parehong output sa lahat ng mga tanyag na mga lokasyon, namin lamang na kailangan upang ipatupad ang mga karagdagang function sa hook sa aming module at tumawag sa orihinal na code hook upang makabuo ang output. Tandaan na lamang namin ang talagang tawag ng registerHook () para sa mga default na isa sa ang install () function na ng miyembro, at ipaalam sa Back Office panghawakan ang registration ng iba.

    	 pagpapaandar sa hookRightColumn ($ params)
    	 {
    		 return $ ito-> hookLeftColumn ($ params);
    	 }
    
    	 function na hookTop ($ params)
    	 {
    		 return $ ito-> hookLeftColumn ($ params);
    	 }
    
    	 function na hookHome ($ params)
    	 {
    		 return $ ito-> hookLeftColumn ($ params);
    	 }
    
    	 function na hookFooter ($ params)
    	 {
    		 return $ ito-> hookLeftColumn ($ params);
    	 }
    

    Buod

    Higit sa ito serye ng mga artikulo ay dapat mayroon kang natutunan kung paano gumagana ang pangunahing sistema ng module sa Prestashop at ma-module ng code na maghatid ng output sa ibang mga lugar ng pagtatanghal sa Front Office. Makikita mo rin magkaroon ng isang magandang framework code sa base ang iyong sariling mga module sa. Maaaring mayroon kang napansin na sa oras na hindi kami ay may aktwal na ginamit smarty o ang mga template file sa paglikha ng aming module - ito ay sinadya bilang sila ay makikita bilang isang hiwalay na entity mula sa ang disenyo ng module na mismo.

    Smarty ay lubos na kakayahang umangkop, ngunit ang pagpipilian na gamitin ito ay batay sa maraming mga kadahilanan, at para sa mga dahilan pagganap na ito ay pinakamahusay na upang maiwasan ang paggamit nito kung sa lahat ng posibleng. Mamaya ay galugarin ng mga artikulo kung paano at kung kailan gamitin ang smarty upang mapahusay ang inyong mga module functionality bagaman, dahil ito ay isang pangunahing bahagi ng architecture Prestashop.

    Maaari mong i-download ang kumpletong code sa module ng buto gamit ang link sa ibaba:

    Balangkas v0.1.0

    Mga Kategorya: Tutorial