📜  FuelPHP-表单编程

📅  最后修改于: 2020-10-25 04:23:58             🧑  作者: Mango


FuelPHP提供了三个类, Form Fieldset和Input ,以执行Form编程。

  • 表单类提供了创建所有HTML表单元素的选项。

  • Fieldset类提供了一个选项,可以通过更高级的方法来创建html元素,并集成模型和验证。

  • 输入类提供了一个选项,用于解析通过html表单以及http参数,服务器变量和用户代理提交的数据。

在本章中,让我们学习FuelPHP中的Form编程

形成

如前所述,Form类提供了创建html表单元素的方法,重要的方法如下-

打开()

open()用于创建新表单。它提供以下两个参数-

  • $ attributes-表单标签的属性为数组,或者仅操作URL为字符串。

  • $ hidden-隐藏字段名称及其值的数组。

echo Form::open('/employee/add'); 
echo Form::open(array('action' => '/employee/add', 'method' => 'post'));

关()

close()只是关闭窗体。

echo Form::close();

输入()

input()创建html输入元素。它具有以下三个参数,

  • $ field-输入元素的名称

  • $ value-输入元素的值

  • $ attributes-输入元素的属性作为数组

echo Form::input('name', 'jon', array('style' => 'border: 20px;'));

标签元素

label创建html标签元素。它具有以下三个参数,

  • $ label-要显示的标签

  • $ id-关联的表单元素ID

  • $ attributes-标签元素的属性为数组

echo Form::label('Employee Name', 'employee_name');

hidden与输入法类似,不同之处在于它将输入元素的类型设置为隐藏。

密码

密码类似于输入法,不同之处在于它将输入元素的类型设置为密码。

无线电

radio与输入法相似,不同之处在于它将输入元素的类型设置为radio。它具有以下四个参数,

  • $ field-输入元素的名称

  • $ value-输入元素的值

  • $ checked-是否检查项目(是/否)

  • $ attributes-输入元素的属性作为数组

echo Form::label('Male', 'gender'); 
echo Form::radio('gender', 'Male', true); 
echo Form::label('Female', 'gender'); 
echo Form::radio('gender', 'Female');

复选框

复选框类似于输入法,不同之处在于它将输入元素的类型设置为复选框。它具有以下四个参数,

  • $ field-输入元素的名称

  • $ value-输入元素的值

  • $ checked-是否检查项目(是/否)

  • $ attributes-输入元素的属性作为数组

echo Form::label('Male', 'gender'); 
echo Form::checkbox('gender', 'Male', true);
echo Form::label('Female', 'gender'); 
echo Form::checkbox('gender', 'Female');

文件

file与输入法类似,不同之处在于,它将输入元素的类型设置为file。

文本区域

textarea创建html textarea元素。它具有以下三个参数,

  • $ field -textarea元素的名称

  • $ value -textarea元素的值

  • $ attributes -textarea元素的属性作为数组

echo Form::textarea ('description', 'original data (value)', array ('rows' => 6, 
      'cols' => 8)); 

选择

select创建一个HTML select元素。它具有以下四个参数-

  • $ field-选择元素的名称

  • $ values-初始选择值

  • $ options-选项作为数组。选项可以使用嵌套数组进行分组

  • $ attributes-输入元素的属性作为数组

echo Form::select ( 
   'country',  
   'none',  
   array ( 
      'none'  => 'None', 
      'asia'  => array ( 
         'in' > 'India', 
         'cn' => 'China' 
      ), 
      
      'us' => 'United States' 
   ) 
);

提交

Submit与输入方法类似,不同之处在于它设置要提交的输入元素的类型。

纽扣

button创建html button元素。它具有以下三个参数,

  • $ field-按钮元素的名称

  • $ value-按钮元素的值

  • $ attributes-按钮元素的属性作为数组

echo Form::button('emp_submit', 'Submit');

重启

reset与输入方法相似,不同之处在于reset设置要重置的输入元素的类型。

fieldset_open

fieldset_open创建html字段集和图例元素。它具有以下两个参数-

  • 属性-字段集元素的属性作为数组

  • 图例-要创建的图例的名称

// returns 
Custom Legend echo Form::fieldset_open (array ( 'class' => 'example-class', 'id' => 'exampleid', 'legend' => 'Custom Legend' ));

fieldset_close

fieldset_close创建HTML字段集关闭标签。

// returns  
echo Form::fieldset_close(); 

输入类别

输入类提供了读取所有请求数据以及表单详细信息的方法。一些重要的方法如下-

乌里

uri返回请求的当前URI

// request: http://localhost:8080/employee/welcome  
echo Input::uri(); // return /employee/welcome

方法

方法返回请求中使用的HTTP方法

echo Input::method() // "POST"

得到

get可以读取$ _GET变量。它具有以下两个参数,

  • $指数– $ _GET数组的索引

  • $ default-默认值,如果找不到索引。

echo Input::get('age', '20'); // returns $_GET['age']

发布

post可以读取$ _POST变量。它具有以下两个参数,

  • $指数– $ _POST数组的索引

  • $ default-默认值,如果找不到索引

echo Input::get('age', '20'); // returns $_POST['age']

参数

param允许从$ _GET,$ _ POST,$ _ PUT或$ _DELETE变量中获取项目。它具有以下两个参数,

  • $ index-数组的索引

  • $ default-默认值,如果找不到索引

如果未指定参数,它将返回所有项目。

echo Input::param('age', '20'); // returns $_POST['age']

文件

文件使读取$ _FILE变量。它具有以下两个参数,

  • $指数– $ _POST数组的索引

  • $ default-默认值,如果找不到索引

echo Input::file();

is_ajax

如果通过AJAX发出请求,则is_ajax返回true。

echo Input::is_ajax() // return false

协议

protocol返回请求中使用的HTTP协议。

echo Input::protocol() // returns "HTTP"

ip

ip返回通过其发出请求的IP地址。

echo Input::ip() // returns "84.45.34.24" (Public IP Address)

real_ip

real_ip尝试返回通过其发出请求的真实IP地址(如果客户端位于代理之后)。

echo Input::real_ip() // returns "10.76.12.1" (local private IP Address)

服务器

服务器启用读取$ _SERVER变量。它具有以下两个参数,

  • $指数– $ _POST数组的索引

  • $ default-默认值,如果找不到索引。

echo Input::server('HTTP_HOST'); // returns localhost:8080

推荐人

Referrer从$ _SERVER变量返回引用者。这是获取当前请求的http引荐来源网址的快捷方式。

用户代理

user_agent从$ _SERVER变量返回用户代理。这是获取当前请求的http用户代理的快捷方法。

请求参数

query_string从$ _SERVER变量返回查询字符串。这是获取当前请求的查询字符串的快捷方法。

标头

标头返回特定或所有标头。它具有以下两个参数-

  • $ index -HTTP标头的名称

  • $ default-默认值,如果找不到索引。

echo Input::headers('Content-Type'); // returns "text/html"

延期

extension返回当前请求的URI扩展。

// Example URL: http://localhost/test/ 
echo Input::extension();  // NULL  

// Example URL: http://localhost/test.html 
echo Input::extension();  // 'html'

工作实例

让我们创建一个简单的表单,以使用Form和Input类添加新员工。

建立表格

在雇员控制器中创建新动作get_add ,如下所示。

public function get_add() { 
   return Response::forge(View::forge('employee/add')); 
} 

现在,如下所示添加操作视图,fuel / app / views / employee / add.php。

Employee :: add page 
       
       
       
   
   
    
      
'employee/add', 'method' => 'post')); ?>
'form-control')); ?>
'form-control')); ?>
'btn btn-default')); ?>

在这里,我们使用了引导程序来设计表单。 FuelPHP为引导程序组件提供全面支持。现在,请求页面http:// localhost:8080 / employee / add将显示以下表单。

表格设计

处理表格

创建新动作post_add来处理表单,并将用户输入的员工数据添加到员工控制器中的数据库中,如下所示。

public function post_add() { 
   $name = Input::post('name'); 
   $age = Input::post('age'); 
   $model = new model_employee(); 
   $model->name = $name; 
   $model->age = $age; 
   $model->save();  
   Response::redirect('employee/list'); 
}

一旦用户输入的数据被保存到数据库中,我们就已被重定向到员工列表页面。接下来,我们将创建员工列表页面。

列出员工

创建新动作action_list,以在数据库中列出员工,如下所示。

public function action_list() { 
   $data = array(); 
   $data['emps'] = model_employee::find('all');
   return Response::forge(view::forge('employee/list', $data)); 
}

为上述操作创建新视图,即加油/应用/视图/员工/列表,如下所示。

检查表格

现在,请求URL http:// localhost:8080 / employee / add ,如以下屏幕截图所示输入一些员工数据,然后提交表单。

员工资料

然后,它显示数据库中可用的所有雇员(包括新添加的雇员),如下所示:

数据库