CakePHP的表單處理

2018-01-18 16:15 更新

CakePHP提供了多種內(nèi)置的標(biāo)簽用來輕松和安全地處理HTML表單。像許多其他PHP框架一樣,使用CakePHP也可以生成HTML的主要元素。以下是用于生成HTML元素的各種功能。

下面的函數(shù)用于生成select選項(xiàng)。

語法_selectOptions(  array  $elements  array(),  array  $parents  array(), boolean $showParents null, array $attributes array() ) 
參數(shù)說明 -要格式化的元素; -OPTGROUP的父元素;-是否顯示父元素;-HTML屬性
返回類型數(shù)組
說明返回一個(gè)格式化的OPTION/OPTGROUP元素的數(shù)組


下面的函數(shù)用于生成HTML select元素

語法select( string $fieldName , array $options array() , array $attributes array() )
參數(shù)說明 -SELECT元素的名字屬性;-SELECT元素中所用的OPTION元素的數(shù)組,采用value=>text鍵值對形式;-SELECT元素的HTML屬性
返回類型格式化的SELECT元素
說明返回格式化的SELECT元素


下列功能用于生成 HTML頁面上按鈕 。

語法Button (string $title, array $options array() ) 
參數(shù)說明 -按鈕標(biāo)題,非自動(dòng)HTML編碼;-選項(xiàng)和HTML屬性的數(shù)組
返回類型HTML button標(biāo)簽
說明創(chuàng)建<button>標(biāo)簽,默認(rèn)type值為submit,您可以使用$options['type']改變其值


下列功能用于生成 HTML頁面上的復(fù)選框 。

語法Checkbox (string $fieldName, array $options array() ) 
參數(shù)說明 -字段名,如:Modelname.fieldname;-HTML屬性數(shù)組,可選項(xiàng)為value,checked, hiddenField, disabled, default.
返回類型HTML文本輸入框元素
說明創(chuàng)建復(fù)選框輸入控件


以下功能用于創(chuàng)建 HTML頁面上的表單元素 。

語法create( mixed $model null , array $options array() ) 
參數(shù)說明 -所定義的表單的模型名稱,插件模型須包含插件名字,如:ContactManager.Contact。若傳遞一個(gè)數(shù)組且$options參數(shù)為空,則數(shù)組會(huì)被用作表單選項(xiàng)。如果為false,則沒有模型會(huì)被使用。
-一個(gè)HTML屬性和選項(xiàng)的數(shù)組,可能值為type, action, url, default, onsubmit,inputDefaults, encoding
返回類型格式化的空白表單標(biāo)簽
說明返回一個(gè)HTML form元素

以下功能用于提供 HTML頁上文件上載功能 。

語法file(string $fieldName, array $options array() ) 
參數(shù)說明 -字段名,在表單中為“Modelname.fieldname“; -HTML屬性數(shù)組
返回類型文件輸入(選擇)框
說明用來創(chuàng)建文件選擇組件


以下功能用于創(chuàng)建HTML頁面上隱藏的元素 。

語法hidden( string $fieldName , array $options array() ) 
參數(shù)說明 -字段名,在表單中為“Modelname.fieldname"; -HTML屬性數(shù)組
返回類型隱藏的輸入域
說明創(chuàng)建一個(gè)隱藏的輸入域


下列功能用于生成HTML頁面上輸入元素 。

語法Input (string $fieldName , array $options array() ) 
參數(shù)說明 -此處應(yīng)是“Modelname.fieldname";-每種類型的input元素有不同的選項(xiàng)
返回類型輸入控件
說明生成一個(gè)完整的表單輸入控件,包含label和包裹其的div


下列功能用于生成HTML頁面上的單選按鈕

語法Radio (string $fieldName , array $options array() , array $attributes array() ) 
參數(shù)說明 -字段名,如“Modelname.fieldname";-單選項(xiàng)數(shù)組;-HTML屬性數(shù)組及其上的特殊屬性;
返回類型單選框控件
說明創(chuàng)建單選控件,會(huì)生成一個(gè)默認(rèn)展示區(qū)域,用$options參數(shù)可以控制此展示區(qū)域


下列功能用于生成HTML頁的提交按鈕。

語法Submit (string $caption null, array $options array() ) 
參數(shù)說明 -按鈕上的label或者:如果參數(shù)包含”//"或包含擴(kuò)展名.JPG, .JPE, .JPEG, .GIF, .PNG,如果存在擴(kuò)展名則使用圖像文件作為label,且如果第一個(gè)字符為"/”則圖像文件路徑相對應(yīng)網(wǎng)站根目錄webroot,如果第一個(gè)字符不為“/”則圖像文件路徑相對于webroot/img
 -選項(xiàng)數(shù)組,可能的選項(xiàng)為div,before,after,type等
返回類型HTML提交按鈕
說明創(chuàng)建一個(gè)提交按鈕,此方法會(huì)生成一個(gè)可用于提交/重置表單的<input />元素,可以用$options控制type。如果$caption參數(shù)帶圖像路徑,則會(huì)創(chuàng)建一個(gè)圖形提交按鈕


下列功能用于生成 HTML頁面上textarea元素 。

語法Textarea (string $fieldName , array $options array() )
參數(shù)說明 -字段名,在表單中為“Modelname.fieldname”; -html屬性數(shù)組,特殊選項(xiàng)如escape;
返回類型文本輸入域
說明創(chuàng)建文本輸入域控件

修改config/routes.php文件如下。

config/routes.php文件

<?php
   use CakeCorePlugin;
   use CakeRoutingRouteBuilder;
   use CakeRoutingRouter;

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

src/Controller/目錄下創(chuàng)建一個(gè)RegistrationController.php文件。復(fù)制以下代碼至其中。

src/Controller/RegistrationController.php

<?php
   namespace AppController;
   use AppControllerAppController;

   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目錄下創(chuàng)建一個(gè)Registrations目錄,并在該Registrations目錄下創(chuàng)建一個(gè)名為index.ctp的視圖文件。復(fù)制以下代碼至其中。

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

通過訪問以下網(wǎng)址執(zhí)行上面的例子- 

http://localhost:85/CakePHP/register

輸出

執(zhí)行以上程序,你會(huì)看到如下頁面。



以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號