YII menyediakan rangka kerja yang mantap untuk borang pengendalian dan mengesahkan input pengguna. Komponen teras ialah widget yii\widgets\ActiveForm
, yang memudahkan proses dengan ketara. Widget ini secara automatik menjana HTML untuk medan borang anda berdasarkan atribut model anda dan peraturan pengesahannya.
Mari kita gambarkan dengan contoh. Katakan anda mempunyai model ContactForm
:
<code class="php"><?php namespace app\models; use yii\base\Model; class ContactForm extends Model { public $name; public $email; public $subject; public $body; public function rules() { return [ [['name', 'email', 'subject', 'body'], 'required'], ['email', 'email'], ]; } }</code></code>
Pada pandangan anda, anda akan menggunakan ActiveForm
seperti ini:
<code class="php"><?php $form = \yii\widgets\ActiveForm::begin(); ?> = $form->field($model, 'name')->textInput() ?> = $form->field($model, 'email')->textInput() ?> = $form->field($model, 'subject')->textInput() ?> = $form->field($model, 'body')->textarea(['rows' => 6]) ?> <div class="form-group"> = Html::submitButton('Submit', ['class' => 'btn btn-primary']) ?> </div> <?php \yii\widgets\ActiveForm::end(); ?></code>
Ini menghasilkan borang dengan medan input untuk setiap atribut. rules()
kaedah dalam model mentakrifkan peraturan pengesahan. Apabila borang dikemukakan, $model->validate()
akan menyemak input terhadap peraturan ini. Mesej ralat dipaparkan secara automatik di sebelah medan masing -masing jika pengesahan gagal. Anda boleh mengakses data yang disahkan melalui $model->attributes
. Ingatlah untuk mengendalikan penyerahan borang dalam tindakan pengawal anda.
Mengamankan borang di Yii melibatkan beberapa langkah penting:
Html::encode()
Yii adalah rakan anda. Gunakannya untuk melepaskan aksara HTML dalam mana -mana data yang anda paparkan dari input pengguna.yii\web\CsrfToken
mengendalikan ini secara automatik. Pastikan anda menggunakan yii\widgets\ActiveForm
kerana ia secara automatik termasuk perlindungan CSRF.safeAttributes()
dalam model anda untuk menentukan atribut mana yang selamat untuk ditugaskan secara besar-besaran. Yii memudahkan interaksi pangkalan data melalui Activerecord. Selepas mengesahkan input pengguna, anda boleh menyimpan data ke pangkalan data anda menggunakan kaedah save()
ActiveReCord.
Dengan mengandaikan anda mempunyai model Contact
yang sepadan dengan jadual pangkalan data, anda boleh melakukan ini:
<code class="php">if ($model->load(Yii::$app->request->post()) && $model->validate()) { if ($model->save()) { // Success! Send a confirmation email, etc. } else { // Handle save errors } }</code>
Kod ini terlebih dahulu memuat data yang dikemukakan ke dalam model menggunakan load()
. Kemudian, ia mengesahkan data. Jika pengesahan berjaya, ia cuba menyimpan data ke pangkalan data. Kaedah save()
mengendalikan interaksi pangkalan data, termasuk mengendalikan ralat pangkalan data yang berpotensi.
Pengesahan sisi pelanggan meningkatkan pengalaman pengguna dengan memberikan maklum balas segera. Yii mengintegrasikan dengan lancar dengan kerangka JavaScript seperti jQuery untuk mencapai matlamat ini. yii\widgets\ActiveForm
secara automatik menjana kod pengesahan sisi klien berdasarkan peraturan model anda.
Anda tidak perlu menulis banyak kod tambahan untuk pengesahan sisi klien asas; ActiveForm
mengendalikan kebanyakannya secara automatik. Untuk senario yang lebih kompleks, anda boleh menyesuaikan logik pengesahan sisi klien dengan menggunakan kaedah validate()
widget ActiveForm
dan mengintegrasikan dengan fungsi JavaScript tersuai. Walau bagaimanapun, sentiasa ingat bahawa pengesahan sisi klien harus dianggap sebagai langkah tambahan dan tidak pernah pengganti untuk pengesahan sisi pelayan yang mantap.
Atas ialah kandungan terperinci Bagaimana saya bekerja dengan borang dalam yii dan mengendalikan pengesahan input pengguna?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!