Pagsusulat ng iyong sariling Prestashop Module - Bahagi 5
Ang pagtatapos touches
Pagpapakilala
Sa huling bahagi ng aming mga pangunahing module pagsulat tutorial serye kami ay tumingin sa ang huling hakbang sa pagbabagong-anyo ang ang aming Tutorialthird module klase sa isang base ng template na maaari naming gamitin upang sipain simulan ang pagsusulat ng mga bagong module. Sa halip na 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 bahaging ito upang maaari kang makakuha sa huling code at gamitin ito bilang batayan para sa iyong sariling mga proyekto. Kami ay pagpunta sa tumawag ito module na "balangkas" - isang pangalan na kami palitan sa aming mga sarili pagdating sa paggawa ng mga bagong module na batay ito.
Styling ang configuration form na
Ang unang pagbabago na kami ay pagpunta sa gumawa ay pawa kosmetiko, gayunman ito ay isang mahalagang sangkap dahil gusto naming magbigay ng isang pare-pareho interface para sa aming mga gumagamit. Ang aming form code mukhang:
_displayForm ng pribadong function na () { $ Ito-> _html. = ' <form action="'.$_SERVER['REQUEST_URI'].'" method="post"> <label> '. $ ito-> l (' Mensahe sa mundo na ').' </ label> <div class="margin-form"> <input type="text" name="our_message" /> </ Div> <input type="submit" name="submit" value="'.$this-> l ('Update'). '"class =" button "/> </ Form> '; }
Ang convention para sa mga screen configuration na ito ay Pakibalot ang mga setting sa isang fieldset, at makikita din namin na kailangan upang magdagdag ng isang magandang friendly na (maisasaling) alamat kumpleto sa icon. Ay ngayon tumingin ang aming code tulad ng:
_displayForm ng pribadong function na () { $ 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 na ').' </ label> <div class="margin-form"> <input type="text" name="our_message" /> </ Div> <input type="submit" name="submit" value="'.$this-> l ('Update'). '"class =" button "/> </ Fieldset> </ Form> '; }
Ang aming huling kosmetiko pagbabago ay upang magdagdag ng isang heading sa itaas ng aming mga setting ng screen lamang sa kaso gumagamit ay nakalimutan kung saan sila ay! Ginagawa namin ito sa pamamagitan ng pagdagdag ng sumusunod na linya sa simula ng Ang pagpapaandar getContent ():
$ Ito-> _html = na '<h2>' $ ito-> displayName '</ h2>'..;
Pre-populating configuration form na mga patlang
Isa pang nawawalang elemento mula sa aming mga orihinal na disenyo ng tutorial ay ang pagpapakita ng mga kasalukuyang setting sa form ng pagsasaayos ng module, at kahit na kapag ang form ay babalik mula sa pag-update ng mga halaga ang mga patlang ay blangko, kaya kailangan namin upang ayusin ang glitch na ito masyadong. Mayroong dalawang posibilidad na kailangan namin upang pangasiwaan:
- Unang pagpapakita ng form ay dapat ipakita ang kasalukuyang configuration (kung mayroon man)
- Pagkatapos ng isang update ng form na dapat naming ipakita ang mga data na ipinasok ng gumagamit
Maaari naming gamitin ang Configuration :: makakuha ng () function na makuha ang mga kasalukuyang setting mula sa database, at Tools :: getValue ng () 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 ay tumutukoy sa isang "default" upang gamitin ang mga dapat 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 na input code ay:
<input type="text" name="our_message" value="'.Tools::getValue('our_message', Configuration::get($this-> pangalan. sa '_message')). '"/>
Ang 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 (ang' our_message '), totoo.); $ Ito-> _html = '<div class="conf confirm">' $ ito-> l ('Mga Setting-update') '</ div>'.; }
na may mga sumusunod:
kung (! sizeof ($ ito-> _postErrors)) $ Ito-> _postProcess ();
At idagdag namin ang bagong miyembro ng pribadong function na ang aming klase upang panghawakan ang mga aktwal na mga update sa isang solong, madaling makikilala lokasyon:
pribadong ang pagpapaandar _postProcess () { Configuration :: updateValue ($ ito-> pangalan _message ', Tools :: getValue (ang' our_message '), totoo.); $ Ito-> _html = '<div class="conf confirm">' $ ito-> l ('Mga Setting-update') '</ div>'.; }
Paghawak ng iba pang mga uri ng patlang
Sa huling na-download ng module ng balangkas din ko na naidagdag ang mga halimbawa ng iba pang mga uri ng mga patlang na ay kumilos bilang mga kapaki-pakinabang na mga shortcut sa paglikha ng iyong form sa module configuration. Ito ay sumasaklaw sa mga checkbox, radio button, textarea at drop-down na listahan. Ang kailangan mong gawin ay ang magdagdag / muling pangalanan ang mga patlang, magdagdag ng anumang pagpapatunay na kinakailangan upang ng ang _postValidation () function na at baguhin ang code ng update sa ang _postProcess () function na naaangkop.
Para sa mga ipinag-uutos na mga setting ay dapat mo ring subukan ang para sa kanilang presensya sa function na-install at ang nararapat na hakbang upang pigilan ang iyong ng module 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, bagaman ito ay mas tama upang gawin ito sa loob ng i-install ().
Pagdaragdag ng maramihang display lokasyon Hooks
Ang aming Tutorialthird module maaari lamang ipakita ang aming nilalaman sa kaliwang haligi dahil ito ay ang tanging hook na namin ipinapatupad. Sa kabutihang-palad ay masyadong madaling ipatupad ang "maglipat ng module" BackOffice andar sa aming code. Sa pinakasimpleng anyo namin lamang gamitin ang parehong output sa lahat ng mga lokasyon, ngunit kung kinakailangan sa lahat ng mga karagdagang Hooks ng mga iba't-ibang mga resulta.
Upang gumawa ng parehong output sa lahat ng mga popular na mga lokasyon, namin lamang na kailangan upang ipatupad ang mga karagdagang pag-andar ng hook sa aming module at tawagan ang orihinal na code na hook upang makabuo ng output. Tandaan na lamang namin talagang tumawag registerHook () para sa mga default na isa sa ang pag-install () miyembro ng function, at ipaalam sa Bumalik Office panghawakan ang registration ng iba.
function na hookRightColumn ($ params) { bumalik $ ito-> hookLeftColumn ($ params); } Mga pagpapaandar hookTop ($ params) { bumalik $ ito-> hookLeftColumn ($ params); } ng pagpapaandar hookHome ($ params) { bumalik $ ito-> hookLeftColumn ($ params); } Ang pagpapaandar hookFooter ($ params) { bumalik $ ito-> hookLeftColumn ($ params); }
Buod
Higit sa ito serye ng mga artikulo ay dapat na iyong natutunan kung paano gumagana ang ang pangunahing sistema ng module sa Prestashop at ma-mga module code na maghatid ng output sa ibang lugar ng pagtatanghal sa Front Office. Makikita mo rin magkaroon ng isang magandang framework code sa Base ang iyong sariling mga module sa. Maaari mong napansin na sa oras na hindi na namin talagang ginagamit sa smarty o mga template file nito sa paglikha ng aming module - ito ay sinadya bilang sila ay makikita bilang isang hiwalay na entity mula sa ang disenyo ng module mismo.
Smarty ay lubos na kakayahang umangkop, ngunit ang pagpili gamitin ito ay batay sa maraming mga kadahilanan, at para sa mga dahilan ng pagganap na ito ay pinakamahusay na upang maiwasan ang paggamit nito kung sa lahat ng posibleng. Mamaya ay galugarin ng mga artikulo sa kung paano at kung kailan gamitin ang smarty upang mapahusay ang inyong mga module ng pag-andar bagaman, tulad ng ito ay isang pangunahing bahagi ng architecture Prestashop.
Maaari mong i-download ang kumpletong balangkas module code gamit ang link sa ibaba:

















































