form های HTML در فریمورک Yii
هنگامی که یک form بر اساس یک مدل است، روش معمول ایجاد این فرم در فریمورک 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',
];
}
}
?>
ما مدل فرم ثبت نام را با پنج property تعریف کردیم :
- username
- password
- subscription
- photos
مرحله 2 - برای نمایش این فرم، متد actionRegistration را به کنترلر SiteController اضافه کنید.
public function actionRegistration() {
$mRegistration = new RegistrationForm();
return $this->render('registration', ['model' => $mRegistration]);
}
ما نمونه ای از RegistrationForm را ایجاد می کنیم و آنرا به view با نام registration منتقل می کنیم. اکنون زمان آن است که یک view ایجاد کنید.
مرحله 3 - داخل پوشه views/site folder، یک فایل با نام 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() را فراخوانی کنید، که تمام تگ های input و label را ایجاد می کند. نام inputها به طور خودکار تعیین می شوند.
برای مثال، attribute با نام password به صورت RegistrationForm[password] خواهد بود.اگر می خواهید یک attribute برای گرفتن یک آرایه، داشته باشید، باید [ ] را به نام attribute اضافه کنید.
مرحله 4 - اگر به نوار آدرس مرورگر وبتان بروید و http://localhost:8080/index.php?r=site/registration را وارد کنید، آنچه که مشاهده می کنید مطابق با تصویر زیر است:
این فصل در یک نگاه:
…
سلام . پیشنهاد میکنم حتما دموی دوره رو مشاهده کنید درباره فریم ورک Yii: در پاسخ به سوالات : آیا این فریم ورک سریع است؟ آیا این یک فریم ورک امن است؟ آیا این یک فریم ورک حرفه ای است؟ آیا ا…این فصل در یک نگاه:
…
پیشنهاد میکنیم دمو دوره رو حتما مشاهده کنید با سلام خدمت دوستان عزیز . ابتدا عرض کنم که این دوره برای دوستانی آماده شده که میخوان وب اپلیکیشن های مدرنی رو طراحی بکنن و وارد بازار کار ط…