上一篇筆記成功地建立了一個最基本的檢視頁面,這一次就為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