本文讲下Yii2 Form使用的例子,一个用户提交数据的表单页面,包含 name 和 phone 输入框,提交信息以后,会显示 name 和 phone 的值:
第一步:创建一个 基于 Model 的 EnteryForm;
<?php
namespace frontend\models;
use Yii;
use yii\base\Model;
class EntryForm extends Model
{
public $name;
public $phone;
public function rules()
{
return [
//[['name','phone'],'required','message'=>'必填项不能为空!'],
['name','required','message'=>'name不能为空!'],
['name','string','length'=>[6,12],'tooLong'=>'name最多为12个字符','tooShort'=>'name至少为6个字符'],
['phone','required','message'=>'phone不能为空!'],
['phone','match','pattern' => '/^1[34578]\d{9}$/','message'=>'手机号格式不正确!'],
];
}
}
//name 为6-12位字符,位数不够会有相应的提示;phone为11位的手机号,有个简单的正则来验证
第二步:创建控制器和模板;
//测试 Form 的使用,里面用到了两个模板,entry.php 和 entry-post.php
public function actionEntry()
{
$model = new EntryForm();
if ($model->load(Yii::$app->request->post()) && $model->validate()) {
return $this->render('entry-post', ['model' => $model]);
} else {
return $this->render('entry', ['model' => $model]);
}
}
模板:entry.php
<?php
use yii\helpers\Html;
use yii\widgets\ActiveForm;
?>
<?php $form = ActiveForm::begin(); ?>
<?= $form->field($model, 'name')->label('用户名') ?>
<?= $form->field($model, 'phone')->label('手机号') ?>
<div class="form-group">
<?= Html::submitButton('Submit', ['class' => 'btn btn-primary']) ?>
</div>
<?php ActiveForm::end(); ?>
模板:entry-post.php
<?php
use yii\helpers\Html;
?>
<p>您输入的值为:</p>
<ul>
<li><label>Name</label>: <?= Html::encode($model->name) ?></li>
<li><label>Phone</label>: <?= Html::encode($model->phone) ?></li>
</ul>
看执行结果:
//验证结果

//提交结果

网友评论