CakePHP - 表單處理



CakePHP 提供各種內建標籤來輕鬆安全地處理 HTML 表單。像許多其他 PHP 框架一樣,HTML 的主要元素也是使用 CakePHP 生成的。以下是用於生成 HTML 元素的各種函式。

以下函式用於**生成下拉選項**:

語法 _selectOptions( 陣列 $elementsarray(), 陣列 $parentsarray(), 布林值 $showParentsnull, 陣列 $attributesarray() )
引數
  • 要格式化的元素

  • OPTGROUP 的父元素

  • 是否顯示父元素

  • HTML 屬性

返回值 陣列
描述 返回格式化的 OPTION/OPTGROUP 元素陣列

以下函式用於**生成 HTML 下拉列表元素**。

語法 select( 字串 $fieldName, 陣列 $options array(), 陣列 $attributes array() )
引數

SELECT 元素的 name 屬性

要在 SELECT 元素中使用的 OPTION 元素陣列(作為 'value'=>'文字' 對)。

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

以下函式用於在 HTML 頁面上**生成按鈕**。

語法

Button(字串 $title, 陣列 $optionsarray() )

引數
  • 按鈕的標題。不會自動進行 HTML 編碼。

  • 選項和 HTML 屬性陣列

返回值 HTML 按鈕標籤。
描述

建立一個**<button>**標籤。type 屬性預設為**type="submit"**。您可以使用**$options['type']**將其更改為不同的值。

以下函式用於在 HTML 頁面上**生成複選框**。

語法 Checkbox(字串 $fieldName, 陣列 $optionsarray() )
引數
  • 欄位名稱,例如“模型名稱.欄位名稱”

  • HTML 屬性陣列。可能的選項包括 value、checked、hiddenField、disabled、default。

返回值 HTML 文字輸入元素。
描述 建立一個複選框輸入小部件。

以下函式用於在 HTML 頁面上**建立表單**。

語法 create( 混合 $modelnull , 陣列 $optionsarray() )
引數
  • 定義表單的模型名稱。對於外掛模型,應包含外掛名稱,例如 ContactManager.Contact。如果傳遞陣列且 $options 引數為空,則該陣列將用作選項。如果為 false,則不使用任何模型。

  • html 屬性和選項陣列。可能的選項包括 type、action、url、default、onsubmit、inputDefaults、encoding。

返回值

格式化的起始 FORM 標籤。

描述 返回一個 HTML FORM 元素。

以下函式用於在 HTML 頁面上**提供檔案上傳功能**。

語法

file(字串 $fieldName, 陣列 $optionsarray() )

引數
  • 欄位名稱,格式為“模型名稱.欄位名稱”

  • HTML 屬性陣列。

返回值

生成的 file 輸入。

描述

建立檔案輸入小部件。

以下函式用於在 HTML 頁面上建立**隱藏元素**。

語法

hidden( 字串 $fieldName , 陣列 $optionsarray() )

引數
  • 欄位名稱,格式為“模型名稱.欄位名稱”

  • HTML 屬性陣列。

返回值

生成的隱藏輸入

描述

建立一個隱藏輸入欄位

以下函式用於在 HTML 頁面上生成**輸入元素**。

語法

Input(字串 $fieldName , 陣列 $options array() )

引數
  • 這應該是“模型名稱.欄位名稱”

  • 每種型別的輸入採用不同的選項

返回值

完整的表單小部件

描述

生成一個完整的表單輸入元素,包括標籤和包裝 div

以下函式用於在 HTML 頁面上生成**單選按鈕**。

語法

Radio(字串 $fieldName , 陣列 $optionsarray() , 陣列 $attributesarray() )

引數
  • 欄位名稱,例如“模型名稱.欄位名稱”

  • 單選按鈕選項陣列。

  • HTML 屬性陣列和上面的特殊屬性。

返回值 完整的單選小部件集
描述 建立一個單選小部件集。預設情況下將建立圖例和欄位集。使用 $options 控制這一點。

以下函式用於在 HTML 頁面上生成**提交**按鈕。

語法 Submit(字串 $caption null, 陣列 $options array() )
引數
  • 顯示在按鈕上的標籤,或者如果字串包含 :// 或副檔名 .jpg、.jpe、.jpeg、.gif、.png。如果存在副檔名並且第一個字元為 /,則使用影像,影像相對於 webroot,或者如果第一個字元不為 /,則影像相對於 webroot/img。

  • 選項陣列。可能的選項包括 div、before、after、type 等。

返回值

HTML 提交按鈕

描述 建立一個提交按鈕元素。此方法將生成<input />元素,可用於提交和重置表單,方法是使用 $options。可以透過為 $caption 提供影像路徑來建立影像提交。

以下函式用於在 HTML 頁面上生成**文字區域元素**。

語法

Textarea(字串 $fieldName , 陣列 $options array() )

引數
  • 欄位名稱,格式為“模型名稱.欄位名稱”

  • HTML 屬性陣列,特殊選項如 escape

返回值 生成的 HTML 文字輸入元素
描述 建立一個文字區域小部件

示例

更改**config/routes.php**檔案中的內容,如下面的程式碼所示。

config/routes.php

<?php
use Cake\Http\Middleware\CsrfProtectionMiddleware;
use Cake\Routing\Route\DashedRoute;
use Cake\Routing\RouteBuilder;
$routes->setRouteClass(DashedRoute::class);
$routes->scope('/', function (RouteBuilder $builder) {
   $builder->registerMiddleware('csrf', new CsrfProtectionMiddleware([
      'httpOnly' => true,
   ]));
   $builder->applyMiddleware('csrf');
   //$builder->connect('/pages',['controller'=>'Pages','action'=>'display', 'home']);
   $builder->connect('register',['controller'=>'Registrations','action'=>'index']);
   $builder->fallbacks();
});

在以下位置建立一個**RegistrationsController.php**檔案:

**src/Controller/RegistrationsController.php。** 將以下程式碼複製到控制器檔案中。

src/Controller/RegistrationsController.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.php**的**檢視**檔案。將以下程式碼複製到該檔案中。

src/Template/Registrations/index.php

<?php
   echo $this->Form->create(NULL,array('url'=>'/register'));
   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 來執行以上示例:

https:///cakephp4/register

輸出

執行後,您將收到以下輸出。

Condition
廣告
© . All rights reserved.