Trang

Thứ Năm, 18 tháng 7, 2013

Tìm hiểu cơ bản về Zend_Form [Zend Framework]

Chúng ta sẽ cùng tìm hiểu về Zend_Form. Một trong những lớp khá tiện dụng trong Zend Framework nhằm thực hiện tạo ra các thành phần tương tác trong một form dữ liệu.
I. LÝ THUYẾT

- Để tạo form trong Zend Framework chúng ta sử dụng lớp Zend Form.
Cú pháp:
$form = new Zend_Form;

- Để tạo các đối tượng html ta có cú pháp chung như sau:
$form->createElement(" loại_đối_tượng ", " tên_đối_tượng ", array(danh_sách_các_thuộc_tính));

- Để thao tác được với Zend Form. Trước hết, ta tạo một thư mục forms trong application và trong thư mục này ta tạo file User.php.

1. Tạo thẻ Input với type là text
Ví dụ
$hoten=$this->createElement('text','hoten',array(
                                           'lable'=>'Họ Tên',
                                           'size'=>25,
                                            ));
$this->addElement($hoten);

Html:
<dt id="hoten-label"><label for="hoten" class="optional">Họ Tên</label></dt>
<dd id="hoten-element">
<input type="text" name="hoten" id="hoten" value="" size="25">
</dd>

2. Tạo thẻ Input với type là password
$password = $this->createElement('password','password',array(
                                                 'label'=>'Password',
                                                 'size'=>25,
                                                  ));
$this->addElement($password);

Html:
<dt id="password-label"><label for="password" class="optional">Password</label></dt>
<dd id="password-element">
<input type="password" name="password" id="password" value="" size="25">
</dd>

3. Tạo thẻ select với các option
$all_value_select=array('1'=>'Việt Nam','2'=>'Lào','3'=>'Campuchia');
$selected_value_select=1;
$quocgia=$this->createElement('select','quocgia',array(
                       'label'=>'Quốc gia',
                       'multioptions'=>$all_value_select,
                       'value'=>$selected_value_select,
                          ));
$this->addElement($quocgia);
Để chọn một value mặc định cho select này ta thêm thuộc tính "value"=>"giá_trị_mặc_định"

Html:
<dt id="quocgia-label"><label for="quocgia" class="optional">Quốc gia</label></dt>
<dd id="quocgia-element">
<select name="quocgia" id="quocgia">
    <option value="1" label="Việt Nam" selected="selected">Việt Nam</option>
    <option value="2" label="Lào">Lào</option>
    <option value="3" label="Campuchia">Campuchia</option>
</select></dd>

4. Tạo thẻ input với type là radio
$all_value_radio=array('1'=>'Nam','2'=>'Nữ','3'=>'Khác');
$checked_value_radio=1;
$gioitinh=$this->createElement('radio','gioitinh',array(
                            'label'=>'Giới tính',
                            'multioptions'=>$all_value_radio,
                            'value'=>$checked_value_radio
                                        ));
$this->addElement($gioitinh);

Html:
<dt id="gioitinh-label"><label class="optional">Giới tính</label></dt>
<dd id="gioitinh-element">
<label for="gioitinh-1"><input type="radio" name="gioitinh" id="gioitinh-1" value="1" checked="checked">Nam</label>
<br/>
<label for="gioitinh-2"><input type="radio" name="gioitinh" id="gioitinh-2" value="2">Nứ</label>
<br/>
<label for="gioitinh-3"><input type="radio" name="gioitinh" id="gioitinh-3" value="3">Khác</label>
</dd>

5. Tạo checkbox với Zend_Form
$all_value_multicheckbox=array('1'=>'Đại học','2'=>'Trung cấp','3'=>'Phổ thông');
$checked_value_multicheckbox=array('2','3');
$hocvan=$this->createElement('multiCheckbox','hocvan',array(
                        'label'=>'Học vấn',
                        'multioptions'=>$all_value_multicheckbox,
                        'value'=>$checked_value_multicheckbox,
                            ));
 $this->addElement($hocvan);

Html:
<dt id="hocvan-label"><label for="hocvan" class="optional">Học vấn</label></dt>
<dd id="hocvan-element">
<label for="hocvan-1"><input type="checkbox" name="hocvan[]" id="hocvan-1" value="1">Đại học</label>
<br/>
<label for="hocvan-2"><input type="checkbox" name="hocvan[]" id="hocvan-2" value="2" checked="checked">Trung cấp</label>
<br/>
<label for="hocvan-3"><input type="checkbox" name="hocvan[]" id="hocvan-3" value="3" checked="checked">Phổ thông</label>
</dd>

6. Tạo textarea bằng Zend_Form
$sothich=$this->createElement('textarea','sothich',array(
                      'label'=>'Sở thích',
                      'cols'=>30,
                      'rows'=>5
                       ));
$this->addElement($sothich);

Html:
<dt id="sothich-label"><label for="sothich" class="optional">Sở thích</label></dt>
<dd id="sothich-element">
<textarea name="sothich" id="sothich" cols="30" rows="5"></textarea>
</dd>

7. Tạo hidden field
date_default_timezone_set('Asia/Ho_Chi_Minh');
$date=date("d")."-".date("m")."-".date("Y");
$ngay=$this->createElement('hidden','ngay',array(
                        'value'=>$date,                             
                           ));
$this->addElement($ngay);

Html:
<dt id="ngay-label">&#160;</dt>
<dd id="ngay-element">
<input type="hidden" name="ngay" value="30-05-2013" id="ngay">
</dd>

8. Tạo nút Reset
$reset=$this->createElement('reset','reset',array('label'=>'Reset'));
$this->addElement($reset);

Html:
<dt id="reset-label">&#160;</dt><dd id="reset-element">
<input type="reset" name="reset" id="reset" value="Reset">
</dd>

9. Tạo nút submit
$submit=$this->createElement('submit','submit',array('label'=>'Submit'));
$this->addElement($submit);

Html:
<dt id="submit-label">&#160;</dt><dd id="submit-element">
<input type="submit" name="submit" id="submit" value="Submit">
</dd>

10. Tạo nút submit bằng hình ảnh
$sub_image=$this->createElement('image','sub_image',array(
                   'src'=>"đường_dẫn_hình",
                   'alt'=>'submit',
                         ));
$this->addElement($sub_image);

Html:
<dt id="sub_image-label">&#160;</dt>
<dd>
<input type="image" name="sub_image" id="sub_image" src="http://localhost/zendcache/public/images/submit.png" alt="submit">
</dd>

11. Trong Controller chúng ta sẽ gọi đối tượng Form rồi truyền qua view:
public function formuserAction()
        {
            $f= new Form_User();
            $this->view->formUser=$f;
        }
12. Trong view ta chỉ việc echo là xong
<?php
echo $this->formUser;
?>

Nguồn: Sưu tầm Internet

Không có nhận xét nào:

Đăng nhận xét