当前位置: 首页 > 文档资料 > CakePHP 入门教程 >

表单处理(Form Handling)

优质
小牛编辑
122浏览
2023-12-01

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

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

Syntax_selectOptions(array $elements array(),array $parents array(),boolean $showParents null,array $attributes array())
Parameters
  • 要格式化的元素

  • OPTGROUP的父母

  • 是否向父母展示

  • HTML属性

Returnsarray
Description返回格式化的OPTION/OPTGROUP元素的数组

以下函数用于to generate HTML select element

Syntaxselect(string $ fieldName,array $ options array(),array $ attributes array())
Parameters

SELECT的Name属性

要在SELECT元素中使用的OPTION元素的数组(作为'value'=>'Text'对)

select元素的HTML属性。

Returns格式化的SELECT元素
Description返回格式化的SELECT元素

以下函数用于在HTML页面上to generate button

SyntaxButton(字符串$title ,array $options array())
Parameters
  • 按钮的标题。 不自动HTML编码。

  • 选项和HTML属性的数组。

ReturnsHTML按钮标记。
Description创建<button>标记。 type属性默认为type="submit ”。 您可以使用$options['type']将其更改为其他值。

以下函数用于在HTML页面上to generate checkbox

Syntax复选框(字符串$ fieldName,数组$ options array())
Parameters
  • 字段的名称,例如“Modelname.fieldname”

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

ReturnsHTML文本输入元素。
Description创建一个复选框输入小部件。

以下函数用于在HTML页面上to create form

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

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

Returns格式化的开始FORM标记。
Description返回HTML FORM元素。

以下函数用于在HTML页面上provide file uploading functionality

Syntaxfile(string $fieldName ,array $options array())
Parameters
  • 字段名称,格式为“Modelname.fieldname”

  • HTML属性数组。

Returns生成的文件输入。
Description创建文件输入小部件。

以下函数用于在HTML页面上创建hidden element

Syntaxhidden(string $ fieldName,array $ options array())
Parameters
  • 字段名称,格式为“Modelname.fieldname”

  • HTML属性数组。

ReturnsA generated hidden input
Description创建隐藏的输入字段

以下函数用于在HTML页面上生成input element

Syntax输入(字符串$ fieldName,数组$ options array())
Parameters
  • 这应该是“Modelname.fieldname”

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

ReturnsCompleted form widget
Description生成一个带有标签和包装器div的表单输入元素

以下函数用于在HTML页面上生成radio button

SyntaxRadio(字符串$fieldName ,数组$options array(),数组$attributes array())
Parameters
  • 字段的名称,例如“Modelname.fieldname”

  • 单选按钮选项数组。

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

ReturnsCompleted radio widget set
Description创建一组无线电小部件。 默认情况下会创建图例和字段集。 使用$ options来控制它。

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

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

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

ReturnsAn HTML submit button
Description创建一个提交按钮元素。 此方法将生成《input》元素,可用于通过使用$ options提交和重置表单。 可以通过为$ caption提供图像路径来创建图像提交。

以下函数用于在HTML页面上to generate textarea element

SyntaxTextarea(字符串$ fieldName,数组$ options array())
Parameters
  • 字段名称,格式为“Modelname.fieldname”

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

Returns生成的HTML文本输入元素
DescriptionCreates a textarea widget

例子 (Example)

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和该目录下的Registrations创建一个名为index.ctp的View文件。 复制该文件中的以下代码。

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

输出 (Output)

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

表格处理