- Yii 教程
- Yii - 首頁
- Yii - 概述
- Yii - 安裝
- Yii - 建立頁面
- Yii - 應用結構
- Yii - 入口指令碼
- Yii - 控制器
- Yii - 使用控制器
- Yii - 使用動作
- Yii - 模型
- Yii - 小部件
- Yii - 模組
- Yii - 檢視
- Yii - 佈局
- Yii - 資源
- Yii - 資源轉換
- Yii - 擴充套件
- Yii - 建立擴充套件
- Yii - HTTP 請求
- Yii - 響應
- Yii - URL 格式
- Yii - URL 路由
- Yii - URL 規則
- Yii - HTML 表單
- Yii - 驗證
- Yii - 特設驗證
- Yii - AJAX 驗證
- Yii - 會話
- Yii - 使用快閃記憶體資料
- Yii - Cookie
- Yii - 使用 Cookie
- Yii - 檔案上傳
- Yii - 格式化
- Yii - 分頁
- Yii - 排序
- Yii - 屬性
- Yii - 資料提供者
- Yii - 資料小部件
- Yii - ListView 小部件
- Yii - GridView 小部件
- Yii - 事件
- Yii - 建立事件
- Yii - 行為
- Yii - 建立行為
- Yii - 配置
- Yii - 依賴注入
- Yii - 資料庫訪問
- Yii - 資料訪問物件
- Yii - 查詢構建器
- Yii - 活動記錄
- Yii - 資料庫遷移
- Yii - 主題
- Yii - RESTful API
- Yii - RESTful API 實戰
- Yii - 欄位
- Yii - 測試
- Yii - 快取
- Yii - 片段快取
- Yii - 別名
- Yii - 日誌記錄
- Yii - 錯誤處理
- Yii - 身份驗證
- Yii - 授權
- Yii - 本地化
- Yii - Gii
- Gii – 建立模型
- Gii – 生成控制器
- Gii – 生成模組
- Yii 有用資源
- Yii - 快速指南
- Yii - 有用資源
- Yii - 討論
Yii - HTML 表單
當表單基於模型時,在 Yii 中建立此表單的常用方法是透過yii\widgets\ActiveForm 類。在大多數情況下,表單都有一個對應的模型用於資料驗證。如果模型表示來自資料庫的資料,則模型應該繼承自ActiveRecord 類。如果模型捕獲任意輸入,則它應該繼承自yii\base\Model 類。
讓我們建立一個登錄檔單。
步驟 1 - 在models 資料夾中,建立一個名為RegistrationForm.php 的檔案,內容如下。
<?php
namespace app\models;
use Yii;
use yii\base\Model;
class RegistrationForm extends Model {
public $username;
public $password;
public $email;
public $subscriptions;
public $photos;
/**
* @return array customized attribute labels
*/
public function attributeLabels() {
return [
'username' => 'Username',
'password' => 'Password',
'email' => 'Email',
'subscriptions' => 'Subscriptions',
'photos' => 'Photos',
];
}
}
?>
我們為登錄檔單聲明瞭一個模型,包含五個屬性 - 使用者名稱、密碼、電子郵件、訂閱和照片。
步驟 2 - 要顯示此表單,請將actionRegistration 方法新增到SiteController。
public function actionRegistration() {
$mRegistration = new RegistrationForm();
return $this->render('registration', ['model' => $mRegistration]);
}
我們建立RegistrationForm 的例項並將其傳遞給註冊檢視。現在,是時候建立一個檢視了。
步驟 3 - 在 views/site 資料夾中,新增一個名為registration.php 的檔案,內容如下。
<?php
use yii\bootstrap\ActiveForm;
use yii\bootstrap\Html;
?>
<div class = "row">
<div class = "col-lg-5">
<?php $form = ActiveForm::begin(['id' => 'registration-form']); ?>
<?= $form->field($model, 'username') ?>
<?= $form->field($model, 'password')->passwordInput() ?>
<?= $form->field($model, 'email')->input('email') ?>
<?= $form->field($model, 'photos[]')->fileInput(['multiple'=>'multiple']) ?>
<?= $form->field($model, 'subscriptions[]')->checkboxList(['a' => 'Item A',
'b' => 'Item B', 'c' => 'Item C']) ?>
<div class = "form-group">
<?= Html::submitButton('Submit', ['class' => 'btn btn-primary',
'name' => 'registration-button']) ?>
</div>
<?php ActiveForm::end(); ?>
</div>
</div>
我們觀察到以下幾點:
ActiveForm::begin() 函式標記表單的開始。ActiveForm::begin() 和ActiveForm::end() 函式之間的所有程式碼都將包含在form 標籤內。
要在表單中建立一個欄位,應呼叫ActiveForm::field() 方法。它會自動建立所有輸入和標籤標籤。輸入名稱會自動確定。
例如,password 屬性將是RegistrationForm[password]。如果要使屬性採用陣列,則應在屬性名稱後附加 [ ]。
步驟 4 - 如果您轉到 Web 瀏覽器的位址列並輸入https://:8080/index.php?r=site/registration,您將看到我們的表單。
廣告