此篇是對應筆記3的1.5+版本, 在1.5之前要新增一個form 真係話難唔難但係話易又真係唔算易的, 因為入面包括了很多的html code 及頁面上的設定, 但來到1.5 就真係變得容易了很多呢...
在1.5, 我地只要overwrite renderForm 這個function 更可以了,
可以看到在1.5裏,系統已經提供了內置的function讓我地只需要設定變數fields_form就能建立好張form
利用fields_form['legend']可以設定form legend 的部份...
fields_form['input'] 讓我們設定能提供的變數, 先看看以下的頁面
它其實是由下面的code所建立成
public function renderForm(){
$prod = new Product($this->last_pid);
$this->fields_form = array(
'legend' => array(
'title' => $this->l('Fast Get Discount Setting')
),
'input' => array(
array(
'type' => 'text',
'label' => $this->l('Product name').":",
'disabled' => true,
'name' => 'product_name'
),
array(
'type' => 'hidden',
'name' => 'id_product'
),
array(
'type' => 'text',
'label' => $this->l('No. of Sold').":",
'name' => 'position',
'size' => 25,
'required' => true,
'hint' => sprintf($this->l('Allowed number only'))
),
array(
'type' => 'text',
'label' => $this->l('Reduction').":",
'name' => 'reduction',
'size' => 25,
'required' => true,
'hint' => sprintf($this->l('Input the Amount/Percentage you want to discount.').$this->l('Allowed number only'))
),
array(
'type' => 'select',
'label' => $this->l('Reduction Type').":",
'name' => 'reduction_type',
'options' => array(
'query' => array(array('reduction_type' => 'amount', 'name' => $this->l('Amount')), array('reduction_type' => 'percentage', 'name' => $this->l('Percentage'))),
'id' => 'reduction_type',
'name' => 'name'
)
),
array(
'type' => 'date',
'label' => $this->l('From').":",
'name' => 'from',
'size' => 20,
'class' => 'timepicker',
'desc' => sprintf($this->l('Leave blank to clear the time'))
),
array(
'type' => 'date',
'label' => $this->l('To').":",
'name' => 'to',
'size' => 20,
'class' => 'timepicker',
'desc' => sprintf($this->l('Leave blank to clear the time'))
),
),
'submit' => array(
'title' => $this->l('Save'),
'class' => 'button'
)
);
$this->fields_value = array(
'product_name' => $prod->name[$this->context->language->id]
);
return parent::renderForm();
}
可以看到在1.5裏,系統已經提供了內置的function讓我地只需要設定變數fields_form就能建立好張form
利用fields_form['legend']可以設定form legend 的部份...
'legend' => array(
'title' => $this->l('Fast Get Discount Setting')
),
![]() |
| 設定後的效果 |
fields_form['input'] 讓我們設定能提供的變數, 先看看以下的頁面
它其實是由下面的code所建立成
array(
'type' => 'text',
'label' => $this->l('Product name').":",
'disabled' => true,
'name' => 'product_name'
),
array(
'type' => 'hidden',
'name' => 'id_product'
),
array(
'type' => 'text',
'label' => $this->l('No. of Sold').":",
'name' => 'position',
'size' => 25,
'required' => true,
'hint' => sprintf($this->l('Allowed number only'))
),
- 第一個item我地設定disable為true後, 頁面上這個field 就會變成為唯讀
- 第二個item,我地設定它為hidden,所以在頁面上是看不到它的存在
- 第三個item,我地設定required為true,所以可以看到*在後面,而且也因為設定了hint,所以在滑鼠移上去時會出現提示信息
'submit' => array(
'title' => $this->l('Save'),
'class' => 'button'
)
由於第一個item(product_name),不是直接由database中取出來的(頁面所設定的className), 所以它的內容要透過fields_value來設定
$this->fields_value = array( 'product_name' => $prod->name[$this->context->language->id] );最後,當然要call 番parent的renderform, 如果唔係可是會出現白頁的情況呢!
return parent::renderForm();





0 回應:
Post a Comment