开发手册 欢迎您!
软件开发者资料库

FuelPHP - 表单编程

FuelPHP表单编程 - 从基本概念到高级概念,从简单和简单的步骤学习FuelPHP,其中包括简介,安装,体系结构概述,简单Web应用程序,配置,控制器,路由,请求和响应,视图,演示者,模型和数据库,表单编程,验证,高级表单编程,文件上传,Ajax,HMCV请求,主题,模块,包,Cookie和会话管理,事件,电子邮件管理,Profiler,错误处理和调试,单元测试,完整的工作示例。

FuelPHP提供三个类,表格字段集输入,以执行表格编程.

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

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

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

In本章,让我们在FuelPHP中学习表单编程.

表单

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

open()

open()创建一个新表单.它提供以下两个参数 :

  • $ attributes : 表格标签的属性为数组,或者只是作为字符串的操作网址.

  • $ hidden : 隐藏字段名称及其值的数组.

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


close()

关闭()只需关闭表单.

echo Form::close();


input()

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

  • $ field : 输入元素的名称

  • $ value : 输入元素的值

  • $ attributes :  input元素作为数组的属性

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


标签元素

标签创建html标签元素.它有以下三个参数:

  • $ label : 要显示的标签

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

  • $ attributes :  label元素的属性为数组

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


隐藏

隐藏类似于输入法,除了它设置的类型要隐藏的输入元素.

密码

密码与输入法类似,不同之处在于它设置的类型输入元素到密码.

radio

radio 与输入法类似,不同之处在于设置输入的类型广播元素.它有以下四个参数,

  • $ field : 输入元素的名称

  • $ value : 输入元素的值

  • $ checked : 是否检查该项目(真/假)

  • $ attributes :  input元素作为数组的属性

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 :  input元素作为数组的属性

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


file

文件类似于输入法,除了它设置的类型要归档的输入元素.

textarea

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

  • $ field :  textarea元素的名称

  • $ value :  textarea元素的值

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

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


选择

选择创建HTML选择元素.它有以下四个参数 :

  • $ field : 选择元素的名称

  • $ values : 初始选择值

  • $ options : 选项作为数组.可以使用嵌套数组对选项进行分组

  • $ attributes :  input元素作为数组的属性

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


提交

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

按钮

按钮创建html按钮元素.它有以下三个参数,

  • $ field : 按钮元素的名称

  • $ value : 按钮元素的值

  • $ attributes :  button元素的属性为数组

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


重置

重置类似于输入法,除了它设置的类型要重置的输入元素.

fieldset_open

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

  • 属性 :  fieldset元素的属性为数组

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

// 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 返回请求的当前URI

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


方法

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

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


get

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

  • $ index :  $ _GET数组的索引

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

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

post

发布启用读取$ _POST变量.它有以下两个参数,

  • $ index :  $ _POST数组的索引

  • $ default : 默认值,如果未找到索引

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


param

param 启用从$ _GET,$ _POST,$ _PUT或$ _DELETE变量中获取项目.它有以下两个参数,

  • $ index : 数组的索引

  • $ default : 默认值,如果未找到索引

如果未指定参数,则返回所有项目.

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


file

file 启用读取$ _FILE变量.它有以下两个参数,

  • $ index :  $ _POST数组的索引

  • $ default : 默认值,如果未找到索引

echo Input::file();


is_ajax

is_ajax 如果请求是通过AJAX发出的,则返回true./p>

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变量.它有以下两个参数,

  • $ index :  $ _POST数组的索引

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

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

推荐人

推荐人从$ _SERVER返回推荐人变量.这是获取当前请求的http引用者的快捷方法.

user_agent

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

query_string

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

标题

标题返回特定或所有标题.它有以下两个参数 :

  • $ index :  HTTP标头的名称

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

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

extension

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'));          ?>                                  


在这里,我们使用 bootstrap 来设计表单. FuelPHP为bootstrap组件提供全面支持.现在,请求页面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以列出数据库中的员工,如下所示./p>

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

为上述操作创建新视图 fuel/app/views/employee/list ,如下所示.

            
  •      

检查表格

现在,请求URL, http://localhost:8080/employee/add ,输入一些员工数据,如下面的屏幕截图所示,并提交表格.

员工数据

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

数据库