上一篇筆記成功地建立了一個最基本的檢視頁面,這一次就為admin tab 加入最基本的新增功能吧 (由於prestashop 最近升級了版本, 筆記part 1 至 3, 只適用於1.4.9)
sample code:
要在按下新增或修改時出現form, 我地需要overwrite displayForm, 係入面設定我地需要的form elements, 而form 入面最重要的當然係張form 的action link同入面d parameters, 因為perstashop 原本的class 只會認指定了的名同parameter, 如果你的唔同了而你又沒有為自己新定的action加上code, 它可是不會作出對應的動作呢,所以基本上這一個form 的tag 是不用作出什麼改變的
而其他的則只需好似平時普通的html form 一樣,如果想為到張form 加回由db的值就要用上
以上就可以為到prestashop 設定最basic的一個admin tab,不過由於prestashop出了新版而且也把admin的一部份也改成了controller,寫法上也有些改變,所以這筆記只可以應用在1.4.9版本中呢!
function displayForm(){ global $currentIndex; $defaultLanguage = intval(Configuration::get('PS_LANG_DEFAULT')); $languages = Language::getLanguages(); $obj = $this->loadObject(true); echo ' <script type="text/javascript"> id_language = Number('.$defaultLanguage.'); </script>'; echo ' <form action="' . $currentIndex . '&submitAdd' . $this->table . '=1&token=' . $this->token . '" method="post" class="width3"> ' . ($obj->id ? '<input type="hidden" name="id_' . $this->table . '" value="' . $obj->id . '" />' : '').' <fieldset><legend><img src="../img/admin/profiles.png" />' . $this->l('Admin Test') . '</legend> <label>'.$this->l('Name:').' </label> <div class="margin-form">'; foreach ( $languages as $language ) echo ' <div id="test_' . $language['id_lang'|'id_lang'] . '" style="display: ' . ($language['id_lang'|'id_lang'] == $defaultLanguage ? 'block' : 'none') . '; float: left;"> <input size="33" type="text" name="name_' . $language['id_lang'|'id_lang'] . '" value="' . htmlentities( $this->getFieldValue( $obj, 'name', intval( $language['id_lang'|'id_lang'] ) ), ENT_COMPAT, 'UTF-8' ) . '" /><sup>*</sup> <span class="hint" name="help_box">'.$this->l('Allowed characters: letters, spaces and').' ().-<span class="hint-pointer"> </span></span> </div>'; $this->displayFlags( $languages, $defaultLanguage, 'test', 'test' ); echo '<div class="clear"></div></div>'; echo '<label>'.$this->l('Description:').' </label> <div class="margin-form"> <textarea name="description" rows="10" cols="100">'.htmlentities( $this->getFieldValue( $obj, 'description'), ENT_COMPAT, 'UTF-8' ).'</textarea>'; echo '<div class="clear"></div></div> <div class="margin-form"> <input type="submit" value="'.$this->l('Save').'" name="submitAdd'.$this->table.'" class="button" /> </div> <div class="small"><sup>*</sup> '.$this->l('Required field').'</div> </fieldset> </form> '; }
要在按下新增或修改時出現form, 我地需要overwrite displayForm, 係入面設定我地需要的form elements, 而form 入面最重要的當然係張form 的action link同入面d parameters, 因為perstashop 原本的class 只會認指定了的名同parameter, 如果你的唔同了而你又沒有為自己新定的action加上code, 它可是不會作出對應的動作呢,所以基本上這一個form 的tag 是不用作出什麼改變的
echo '<form action="' . $currentIndex . '&submitAdd' . $this->table . '=1&token=' . $this->token . '" method="post" class="width3">
而其他的則只需好似平時普通的html form 一樣,如果想為到張form 加回由db的值就要用上
// fields 為非多語言support時 $this->getFieldValue( $obj, 'description') // fields 為多語言support時 $this->getFieldValue( $obj, 'name', intval( $language['id_lang'|'id_lang'] ) )
以上就可以為到prestashop 設定最basic的一個admin tab,不過由於prestashop出了新版而且也把admin的一部份也改成了controller,寫法上也有些改變,所以這筆記只可以應用在1.4.9版本中呢!
0 回應:
Post a Comment