CakePHP - 表单处理

CakePHP提供了各种内置标签,可以轻松安全地处理HTML表单.与许多其他PHP框架一样,HTML的主要元素也是使用CakePHP生成的.以下是用于生成HTML元素的各种函数.

以下函数用于生成选择选项.

语法_selectOptions(array $ elements array (),array $ parents array(),boolean $ showParents null,array $ attributes array())
参数
  • 要格式化的元素

  • OPTGROUP的父母

  • 是否向父母展示

  • HTML属性

返回数组
描述返回格式化OPTION/OPTGROUP元素的数组

使用以下函数生成HTML选择元素.

语法select(string $ fieldName,array $ options array(),array $ attributes array())

参数

SELECT的名称属性

OPTION元素的数组(作为'value'=>'Text' SELECT元素用于SELECT元素

select元素的HTML属性.

返回格式化的SELECT元素
描述返回格式化的SELECT元素

以下函数在HTML页面上使用生成按钮.

语法按钮(字符串 $ title ,数组 $ options array())
参数
  • 按钮的标题.不自动HTML编码.

  • 选项和HTML属性的数组.

返回HTML按钮标记.
描述创建< button> 标记. type属性默认为 type ="submit ".您可以使用 $ options ['type'] 将其更改为其他值.

在HTML页面上使用以下函数生成复选框.

语法复选框(字符串$ fieldName,数组$ options array())
参数
  • 字段名称,如"Modelname.fieldname"

  • HTML属性数组.可能的选项包括value,checked,hiddenField,disabled,default.

返回HTML文本输入元素.
描述创建一个复选框输入小部件.

以下在HTML页面上使用函数创建表单

.

语法create(mixed $ model null,array $ options array())
参数
  • 正在为其定义表单的模型名称.应该包含插件模型的插件名称.例如ContactManager.Contact.如果传递数组且$ options参数为空,则该数组将用作选项.如果为false则不使用任何模型.

  • 一组html属性和选项.可能的选项包括type,action,url,default,onsubmit,inputDefaults,encoding

返回格式化的开始FORM标记.
描述返回HTML FORM元素.

以下函数用于在HTML页面上提供文件上传功能.

语法file(string $ fieldName ,array $ options array())
参数
  • 字段名称,格式为"Modelname.fieldname"

  • HTML属性数组.

返回生成的文件输入.
描述创建文件输入小部件.

以下函数用于在HTML页面上创建隐藏元素 .

语法hidden(字符串$ fieldName,数组$ options array())
参数
  • 字段名称,格式为"Modelname" .fieldname"

  • HTML属性数组.

返回生成的隐藏输入
描述创建一个隐藏的输入字段

以下函数用于在HTML页面上生成输入元素.

语法输入(字符串$ fieldName,array $ o ptions array())
参数
  • 这应该是"Modelname.fieldname"

  • 每种类型的输入都有不同的选择

返回已完成的表单小部件
描述生成一个带有标签和包装器div的表单输入元素

使用以下函数在HTML页面上生成单选按钮.

语法Radio(string $ fieldName ,array $ options array(),array $ attributes array())
参数
  • 字段名称,如"Modelname.fieldname"

  • 单选按钮选项数组.

  • 上面的HTML属性数组和特殊属性.

返回已完成的电台小工具set
描述创建一组无线电小部件.默认情况下会创建图例和字段集.使用$ options来控制它.

以下函数用于生成 submit 按钮在HTML页面上.

语法提交(字符串$ caption null,数组$ options array())
参数
  • 按钮上出现的标签或如果字符串包含://或扩展名.jpg,.jpe,.jpeg,.gif,.png使用图像,如果扩展名存在,并且第一个字符是/,图像是相对于webroot,或者如果第一个字符是不是/,图像是相对于webroot/img.

  • 选项数组.可能的选项是div,before,after,type等.

返回HTML提交按钮
说明创建提交按钮元素.该方法将生成< input/>可用于通过使用$ options提交和重置表单的元素.可以通过为$ caption提供图像路径来创建图像提交.

以下函数用于在HTML页面上生成textarea元素.

语法Textarea(字符串$ fieldName,数组$ options array())
参数
  • 名称一个字段,格式为"Modelname.fieldname"

  • HTML属性数组,特殊选项如escape

返回生成的HTML文本输入元素
描述创建textarea小部件

示例

config/routes.php中进行更改文件如下面的代码所示.

config/routes.php

<?php
   use Cake\Core\Plugin;
   use Cake\Routing\RouteBuilder;
   use Cake\Routing\Router;

   Router::defaultRouteClass('DashedRoute');
   Router::scope('/', function (RouteBuilder $routes) {
      $routes->connect('register',['controller'=>'Registrations','action'=>'index']);
      $routes->fallbacks('DashedRoute');
   });
   Plugin::routes();

src/Controller/RegistrationController.php 创建 RegistrationController.php 文件.将以下代码复制到控制器文件中.

src/Controller/RegistrationController.php

<?php
   namespace App\Controller;
   use App\Controller\AppController;

   class RegistrationsController extends AppController{
      public function index(){
         $country = array('India','United State of America','United Kingdom');
         $this->set('country',$country);
         $gender = array('Male','Female');
         $this->set('gender',$gender);
      }
   }
?>

src/Template 创建一个目录注册,并在该目录下创建一个名为

src/Template/Registrations/index.ctp

<?php
   echo $this->Form->create("Registrations",array('url'=>'/register'));
   echo $this->Form->input('username');
   echo $this->Form->input('password');
   echo $this->Form->input('password');
   echo '<label for="country">Country</label>';
   echo $this->Form->select('country',$country);
   echo '<label for="gender">Gender</label>';
   echo $this->Form->radio('gender',$gender);
   echo '<label for="address">Address</label>';
   echo $this->Form->textarea('address');
   echo $this->Form->file('profilepic');
   echo '<div>'.$this->Form->checkbox('terms').
      '<label for="country">Terms &Conditions</label></div>';
   echo $this->Form->button('Submit');
   echo $this->Form->end();
?>

通过访问以下URL : 来执行上述示例; http://localhost:85/CakePHP/register

输出

执行后,您将收到以下输出.

表格处理