Thứ Sáu, 4 tháng 1, 2019

Học lập trình PHP - PHP - Lập trình biểu mẫu nâng cao

Khóa học lập trình PHP cung cấp một chương trình biểu mẫu nâng cao thông qua các lớp Fieldset và Fieldset_Field. Fieldset cung cấp một cách hướng đối tượng để tạo một biểu mẫu.

Nó có hỗ trợ đầy đủ cho các mô hình. Nó cũng hỗ trợ tích hợp để xác thực phía máy khách và phía máy chủ. 

Khóa học lập trình PHP
Khóa học lập trình PHP

Để tạo một biểu mẫu chính thức, đủ để tạo một mô hình với cài đặt xác thực và biểu mẫu phù hợp. Chúng ta hãy tìm hiểu về lớp Fieldset và cách tạo một biểu mẫu bằng cách sử dụng nó trong chương này.

Fieldset


Fieldset là một tập hợp các đối tượng Fieldset_Field . Fieldset_Field xác định mục nhập riêng lẻ của một biểu mẫu, chẳng hạn như tên, họ, v.v. cùng với các xác nhận. Lớp Fieldset có các phương thức để thêm / chỉnh sửa / xóa các trường.

Khóa học lập trình PHP Nó có các tùy chọn để xác định các trường được xác định trong một mô hình và tạo các trường từ mô hình đã cho. Fieldset sử dụng các lớp Form và xác nhận trong nền để thực hiện công việc thực sự. Chúng ta hãy xem một số phương thức quan trọng của lớp Fieldset.

làm giả


forge tạo ra một thể hiện Fieldset mới. Nó có hai tham số sau

$ name - định danh cho bộ trường

$ config - mảng cấu hình. Tùy chọn có thể là validation_instance và form_instance. validation_instance thể có Validation đối tượng và form_instance có thể có đối tượng Form.
$employee_form = Fieldset::forge('employee');

ví dụ

cá thể trả về thể hiện Fieldset được tạo trước đó bằng mã định danh.
$employee_form = Fieldset::instance('employee');

lấy tên

Lấy định danh của thể hiện fieldset.
$employee_form = Fieldset::forge('employee'); 
$name = $employee_form->get_name();

thêm vào

Khóa học lập trình PHP add tạo một thể hiện Fieldset_Field mới và thêm nó vào fieldset hiện tại. Nó chứa bốn tham số sau đây

$ name - tên của trường

$ nhãn - nhãn cho trường

$ thuộc tính - Thuộc tính thẻ HTML

$ quy tắc - quy tắc xác thực
$employee_field = $employee_form-> add (
   'employee_lastname', 
   'Lastname', 
   array ('class' => 'pretty_input')
);  

// with validation rules 
$employee_form->add ( 
   'email', 'E-mail', 
   array('type' => 'email', 'class' => 'pretty_input'), 
   array('required', 'valid_email') 
);

Thêm trước

add_b Before tương tự như add, ngoại trừ nó có thêm một tham số để chỉ định trường mà trước đó trường mới được tạo sẽ được thêm vào.
$employee_form->add_before (
   'employee_firstname', 
   'Firstname', 
   array ('class' => 'pretty_input'), 
   array(), 
   'employee_lastname'
);

xóa bỏ

xóa xóa trường được chỉ định từ bộ trường.
$employee_form->delete('employee_firstname');

cánh đồng

trường nhận được tất cả các trường hoặc một trường được chỉ định từ bộ trường.
$fields = $employee_form->field(); 
$lastname_field = $employee_form->field('employee_lastname'); 

xây dựng

build là bí danh cho $ this-> form () -> build () . Tạo đánh dấu HTML của biểu mẫu.
$employee_form->build(Uri::create('employee/add'));

Cho phép

cho phép kích hoạt lại một trường đã bị vô hiệu hóa trước đó.
$employee_form->enable('employee_firstname');

vô hiệu hóa

vô hiệu hóa cho phép vô hiệu hóa một trường trong bộ trường được xây dựng.
$employee_form->disable('employee_firstname');

hình thức

biểu mẫu trả về thể hiện của biểu mẫu hiện tại.
$form = employee_form->form();
add_model

add_model thêm trường của mô hình vào bộ trường. Nó có ba tham số sau đây,

$ class - tên lớp

$ dụ - thể hiện của lớp để điền vào các trường có giá trị

$ phương thức - tên của phương thức trong lớp. Phương pháp này được sử dụng để thêm các trường vào bộ trường. Orm \ Model có phương thức cần thiết. Tên phương thức mặc định là set_form_fields.
$employee_form = Fieldset::forge('employee'); 
$employee_form->add_model('Model_Employee');

dân cư

dân cư thiết lập giá trị ban đầu của các trường trong bộ trường bằng cách sử dụng thể hiện mô hình.
$emp = new Model_Employee(); 
$emp->name = "Jon"; 
$employee_form->populate($emp);

hồi sinh

repopulation giống như dân cư, ngoại trừ nó tái sinh các trường trong bộ trường.

xác nhận

xác nhận được thể hiện xác thực của bộ trường hiện tại.
$validation = $employee_form->validation();

xác nhận

Bí danh cho $ this-> xác thực () -> xác thực ().

Khóa học lập trình PHP đầu vào

Bí danh cho $ this-> xác thực () -> input ().

lỗi

Bí danh cho $ this-> xác thực () -> error ().

show_errors

Bí danh cho $ this-> xác thực () -> show_errors ().

Ví dụ làm việc

Hãy tạo một biểu mẫu nâng cao để thêm nhân viên mới vào ứng dụng nhân viên mẫu của chúng tôi bằng lớp Fieldset.

Cập nhật mô hình

Cập nhật mô hình nhân viên với các quy tắc xác nhận cần thiết và thêm một người quan sát xác nhận như sau.
<?php  
   class Model_Employee extends Orm\Model { 
      protected static $_connection = 'production'; 
      protected static $_table_name = 'employee'; 
      protected static $_primary_key = array('id'); 
      
      protected static $_properties = array ( 
         'id',  
         'name' => array ( 
            'data_type' => 'varchar',
            'label' => 'Employee Name', 
            'validation' => array ( 
               'required',  
               'min_length' => array(3),  
               'max_length' => array(80) 
            ), 
            'form' => array ( 
               'type' => 'text' 
            ), 
         ),  
         'age' => array ( 
            'data_type' => 'int', 
            'label' => 'Employee Age', 
            'validation' => array ( 
               'required',  
            ), 
            'form' => array ('type' => 'text' ), 
         ), 
      );  
      
      // Just add the Observer, and define the required event 
      protected static $_observers = array('Orm\\Observer_Validation' => array ( 
         'events' => array('before_save'))); 
   } 
Ở đây, chúng tôi đã xác định các quy tắc xác thực cho các trường tên và tuổi và thêm một người quan sát mới để thực hiện xác thực phía máy chủ trước khi lưu mô hình vào cơ sở dữ liệu. 

Quy tắc xác thực tương tự sẽ tạo ra các thuộc tính xác thực đầu vào cần thiết cũng như trong biểu mẫu.

Tạo biểu mẫu


Tạo hành động mới, action_advifiedform trong bộ điều khiển nhân viên như sau.
public function action_advancedform() { 
   
   // create a new fieldset and add employee model
   $fieldset = Fieldset::forge('employee')->add_model('Model_Employee');  
   
   // get form from fieldset 
   $form = $fieldset->form();  
   
   // add submit button to the form 
   $form->add('Submit', '', array('type' => 'submit', 'value' => 'Submit'));  
   
   // build the form  and set the current page as action  
   $formHtml = $fieldset->build(Uri::create('employee/advancedform'));  
   
   // set form in data 
   $data = array(); 
   $data['form'] = $formHtml;  
   return Response::forge(View::forge('employee/advancedform', $data, false)); 
}   
Khóa học lập trình PHP Ở đây, chúng tôi đã tạo biểu mẫu bằng cách sử dụng fieldset và gửi biểu mẫu đến dạng xem. Tiếp theo, thêm chế độ xem cho hành động, nhiên liệu / ứng dụng / lượt xem / nhân viên / advancedform.php như sau.
<!DOCTYPE html> 
<html lang = "en"> 
   
   <head> 
      <title>Employee :: add page</title> 
      <meta charset = "utf-8"> 
      <meta name = "viewport" content = "width = device-width, initial-scale = 1"> 
      <?php echo Asset::css('bootstrap.css'); ?> 
      
      <style>  
         table { 
            width: 90%; 
         }  
         table tr { 
            width: 90% 
         }
         table tr td { 
            width: 50% 
         }  
         input[type = text], select { 
            width: 100%; 
            padding: 12px 20px; 
            margin: 8px 0; 
            display: inline-block; 
            border: 1px solid #ccc; 
            border-radius: 4px; 
            box-sizing: border-box; 
         }  
         input[type = submit] { 
            width: 100%; 
            background-color: #3c3c3c; 
            color: white; 
            padding: 14px 20px; 
            margin: 8px 0; 
            border: none; 
            border-radius: 4px; 
            cursor: pointer; 
         }  
         div { 
            border-radius: 5px; 
            background-color: #f2f2f2; 
            padding: 20px; 
         } 
      </style> 
   </head> 
   
   <body> 
      <div class = "container"> 
         <?php
            if(isset($errors)) { 
               echo $errors; 
            } 
            echo $form; 
         ?> 
      </div> 
   </body> 
   
</html>
Bây giờ, yêu cầu trang add sẽ hiển thị mẫu sau.

Mẫu quy trình


Khóa học lập trình PHP Cập nhật phương thức hành động, action_advifiedform để xử lý biểu mẫu và thêm dữ liệu nhân viên được người dùng nhập vào cơ sở dữ liệu trong bộ điều khiển nhân viên như sau.
public function action_advancedform() { 
   
   // create a new fieldset and add employee model 
   $fieldset = Fieldset::forge('employee')->add_model('Model_Employee');  
   
   // get form from fieldset 
   $form = $fieldset->form();  
   
   // add submit button to the form 
   $form->add('Submit', '', array('type' => 'submit', 'value' => 'Submit')); 
   
   // build the form  and set the current page as action  
   $formHtml = $fieldset->build(Uri::create('employee/advancedform'));  
   
   if (Input::param() != array()) { 
      try { 
         $article = Model_Employee::forge(); 
         $article->name = Input::param('name'); 
         $article->url = Input::param('age'); 
         $article->save(); 
         Response::redirect('employee/list'); 
      
      } 
      catch (Orm\ValidationFailed $e) { 
         $view = View::forge('employee/advancedform'); 
         $view->set('form', $formHtml, false); 
         $view->set('errors', $e->getMessage(), false); 
      } 
   } 
   
   return Response::forge($view); 
}
Ở đây, chúng tôi đã được chuyển hướng đến trang danh sách nhân viên, khi người dùng nhập dữ liệu được xác thực và lưu vào cơ sở dữ liệu. Nếu không, chúng tôi sẽ được hiển thị các hình thức một lần nữa.

Tạo biểu mẫu


Khóa học lập trình PHP Bây giờ, yêu cầu URL, và nhập một số dữ liệu nhân viên và gửi biểu mẫu. Nếu dữ liệu không được cung cấp, thì biểu mẫu sẽ nhắc người dùng nhập dữ liệu như trong ảnh chụp màn hình sau.

Nếu người dùng bỏ qua xác thực phía máy khách, thì máy chủ sẽ xác thực biểu mẫu và hiển thị lỗi như trong ảnh chụp màn hình sau.

Nếu dữ liệu vượt qua xác thực phía máy khách và máy chủ, thì dữ liệu nhân viên sẽ được lưu vào cơ sở dữ liệu và trang được chuyển hướng đến trang danh sách.

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

Đăng nhận xét

lập trình PHP cho các nhà phát triển PERL

Chương này sẽ liệt kê những điểm tương đồng và khác biệt chính giữa PHP và PERL. Điều này sẽ giúp các nhà phát triển PERL hiểu PHP rất nhanh...