Yii - Biểu mẫu HTML
Khi một biểu mẫu dựa trên một mô hình, cách phổ biến để tạo biểu mẫu này ở Yii là thông qua yii\widgets\ActiveFormlớp học. Trong hầu hết các trường hợp, một biểu mẫu có một mô hình tương ứng được sử dụng để xác thực dữ liệu. Nếu mô hình đại diện cho dữ liệu từ cơ sở dữ liệu, thì mô hình phải được dẫn xuất từActiveRecordlớp học. Nếu mô hình nắm bắt đầu vào tùy ý, nó phải được dẫn xuất từyii\base\Model lớp học.
Hãy để chúng tôi tạo một biểu mẫu đăng ký.
Step 1 - Bên trong models thư mục, tạo một tệp có tên RegistrationForm.php với đoạn mã sau.
<?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',
];
}
}
?>
Chúng tôi đã khai báo một mô hình cho biểu mẫu đăng ký của chúng tôi với năm thuộc tính - tên người dùng, mật khẩu, email, đăng ký và ảnh.
Step 2 - Để hiển thị biểu mẫu này, hãy thêm actionRegistration phương pháp cho SiteController.
public function actionRegistration() {
$mRegistration = new RegistrationForm();
return $this->render('registration', ['model' => $mRegistration]);
}
Chúng tôi tạo một phiên bản của RegistrationFormvà chuyển nó vào chế độ xem đăng ký. Bây giờ, đã đến lúc tạo một khung nhìn.
Step 3 - Bên trong thư mục views / site, thêm một tệp có tên registration.php với đoạn mã sau.
<?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>
Chúng tôi quan sát những điều sau đây -
Các ActiveForm::begin()hàm đánh dấu phần đầu của biểu mẫu. Tất cả các mã giữaActiveForm::begin() và ActiveForm::end() các chức năng sẽ được bao bọc trong form nhãn.
Để tạo một trường trong biểu mẫu, bạn nên gọi ActiveForm::field()phương pháp. Nó tạo ra tất cảinput and labelcác thẻ. Tên đầu vào được xác định tự động.
Ví dụ, password thuộc tính sẽ là RegistrationForm[password]. Nếu bạn muốn một thuộc tính nhận một mảng, bạn nên thêm [] vào tên thuộc tính.
Step 4 - Nếu bạn vào thanh địa chỉ của trình duyệt web và nhập http://localhost:8080/index.php?r=site/registration, bạn sẽ thấy biểu mẫu của chúng tôi.