Yii 框架表单验证---实例
------------------------------------------------------------------------------------------
表单页面
------------------------------------------------------------------------------------------
第一: 先使用一下类
use yii\helpers\Html;
use yii\widgets\ActiveForm;
use yii\validators\Volidator;
use yii\captcha\Captcha;
第二: Yii 框架自带的各种表单的写法
$form = ActiveForm::begin(['action'=>'index.php?r=form1/index','method'=>'post','options' => ['enctype' => 'multipart/form-data'] ]); ?>
<?= $form->field($model, 'username',['enableAjaxValidation'=>true]) ?>
<?= $form->field($model, 'password')->passwordInput() ?>
<?= $form->field($model, 'okpassword')->passwordInput() ?>
<?= $form->field($model, 'age') ?>
<?= $form->field($model, 'sex')->radioList(['男' => '男', '女' => '女']); ?>
<?= $form->field($model, 'hobby[]')->checkboxList(['游泳' => '游泳', '跑步' => '跑步', '音乐' => '音乐', '学习' => '学习']) ?>
<?= $form->field($model, 'phone',['enableAjaxValidation'=>true]) ?>
<?= $form->field($model, 'captcha')->widget(Captcha::className(), ['captchaAction'=>'form1/captcha',
'template' => '<div class="row"><div class="col-lg-3">{image}</div><div class="col-lg-6">{input}</div></div>',
]) ?>
<?= $form->field($model, 'email',['enableAjaxValidation'=>true]) ?>
<?= $form->field($model, 'image')->fileInput() ?>
<div class="form-group">
<div class="col-lg-offset-1 col-lg-11">
<?= Html::submitButton('Login', ['class' => 'btn btn-primary']) ?>
</div>
</div>
<?php ActiveForm::end() ?>
----------------------------------------------------------------------------------------------
模型层
----------------------------------------------------------------------------------------------
先使用一下文件上传类 use yii\web\UploadedFile;
public $captcha;
/**
* @验证规则
*/
public function rules()
{
return [
[['age'], 'integer'],
[['image'], 'file','skipOnEmpty'=>false, 'extensions'=>'png,jpg,gif'],
//验证不为空
['username', 'required', 'message' => '{attribute}不能为空'],
['password', 'required', 'message' => '{attribute}不能为空'],
['phone', 'required', 'message' => '{attribute}不能为空'],
['email', 'required', 'message' => '{attribute}不能为空'],
['age', 'required', 'message' => '{attribute}不能为空'],
['sex', 'required', 'message' => '{attribute}不能为空'],
['hobby', 'required', 'message' => '{attribute}不能为空'],
//去掉空格
['username', 'filter', 'filter' => 'trim'],
['password', 'filter', 'filter' => 'trim'],
['okpassword', 'filter', 'filter' => 'trim'],
['phone', 'filter', 'filter' => 'trim'],
['email', 'filter', 'filter' => 'trim'],
['age', 'filter', 'filter' => 'trim'],
//唯一性验证
[['phone'], 'unique','message'=>'{attribute}已经被占用'],
[['username'], 'unique','message'=>'{attribute}已经被占用'],
[['email'], 'unique','message'=>'{attribute}已经被占用'],
//正则匹配验证
[['password'],'match','pattern'=>'/^[a-zA-Z_]\w{6,20}$/','message'=>'{attribute}6-20位数字字母下划线组成,不能以数字开头'],
[['username'],'match','pattern'=>'/^[a-zA-Z_]\w{6,20}$/','message'=>'{attribute}6-20位数字字母下划线组成,不能以数字开头'],
[['age'],'match','pattern'=>'/^18|19|([2-4]\d)|50$/','message'=>'{attribute}为18-50以内整数'],
//['age', 'integer','min'=>18,'max'=>50],
[['phone'],'match','pattern'=>'/^1[3,5,8]\d{9}$/','message'=>'{attribute}为11位13,15,18开头'],
['okpassword', 'required', 'message' => '{attribute}不能为空'],
['okpassword','compare','compareAttribute'=>'password','message'=>'{attribute}与{attribute}一致'],
['captcha', 'captcha', 'message'=>'请输入正确地{attribute}','captchaAction'=>'form1/captcha'],
];
}
---------------------------------------------------------------------------------------------
控制器层
---------------------------------------------------------------------------------------------
<?php
namespace backend\controllers;
use Yii;
use yii\web\Controller;
use app\models\Form1;
use yii\web\UploadedFile;
class Form1Controller extends Controller
{
public function actionIndex()
{
$model=new Form1();
$model->load(Yii::$app->request->post());
if (Yii::$app->request->isAjax)
{
Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
return \yii\bootstrap\ActiveForm::validate($model);
}
if($model->load(Yii::$app->request->post()))
{
//var_dump($_POST);die;
$model->image = UploadedFile::getInstance($model, 'image');
$model->image->name = time().$model->image->name;
//print_r($model);die;
if ($model->validate()){
$model->image->saveAs('./upload/form1/' . $model->image->baseName . '.' . $model->image->extension);
//print_r($img);die;
//获取上传文件的名称
$img=$model->image;
$image=$img->name;
//print_r($image);die;
$username=$_POST['Form1']['username'];
//echo $username;die;
$password=$_POST['Form1']['password'];
$okpassword=$_POST['Form1']['okpassword'];
$age=$_POST['Form1']['age'];
$phone=$_POST['Form1']['phone'];
$email=$_POST['Form1']['email'];
$sex=$_POST['Form1']['sex'];
//print_r($sex);die;
$hobby1=$_POST['Form1']['hobby'];
//print_r($hobby1);die;
$hobby=implode(',',$hobby1);
//print_r($hobby);die;
//添加入库
$connection = \Yii::$app->db;
$query = $connection->createCommand()->insert("form1",['username'=>$username,'password'=>$password,'okpassword'=>$okpassword,'age'=>$age,'phone'=>$phone,'email'=>$email,'sex'=>$sex,'hobby'=>$hobby,'image'=>$image]);
if($query->execute())
{
//echo '成功';
// $this->redirect(array('form1/index'));
echo "<script>
alert('ok');
location.href='index.php?r=form1/index';
</script>";
}
else
{
//echo '失败';
echo "<script>
alert('no');
location.href='index.php?r=form1/index';
</script>";
}
}
}
else
{
return $this->render('form',['model'=>$model]);
}
}
/**
* 生成验证码的方法
*/
public function actions() {
parent::actions();
return [
'captcha' => [
'class' => 'yii\captcha\CaptchaAction',
//'fixedVerifyCode' => YII_ENV_TEST ? 'testme' : null,
'maxLength' => 3,
'minLength' => 3
],
];
}
}
Yii 框架表单验证---实例的更多相关文章
- jQuery-easyui和validate表单验证实例
jQuery EasyUI 表单 - 表单验证插件validatebox 使用时需要向页面引入两个css文件如下: <link rel="stylesheet" href=& ...
- Bootstrap+PHP表单验证实例
简单实用的Bootstrap+PHP表单验证实例,非常适合初学者及js不熟悉者,还有ajax远程验证 js验证表单 1 $(document).ready(function() { 2 $('#def ...
- jquery-4 完整表单验证实例
jquery-4 完整表单验证实例 一.总结 一句话总结:在form的jquery对象中返回false即可终止表单提交. 1.验证的显示错误消息如何布局? 开始时隐藏,出现错误后显示 10 .erro ...
- HTML5 web Form表单验证实例
HTML5 web Form 的开发实例! index.html <!DOCTYPE html> <html> <head> <meta charset=&q ...
- tp框架表单验证
之前的表单验证都是用js写的,这里也可以使用tp框架的验证.但是两者比较而言还是js验证比较好,因为tp框架验证会运行后台代码,这样运行速度和效率就会下降. 自动验证是ThinkPHP模型层提供的一种 ...
- php--yii框架表单验证
在视图层利用表单小部件生成表单时,field只能是数据库中存在的, 例如: use yii\helpers\Html; use yii\widgets\ActiveForm; use yii\capt ...
- tp框架表单验证 及ajax
之前的表单验证都是用js写的,这里也可以使用tp框架的验证.但是两者比较而言还是js验证比较好,因为tp框架验证会运行后台代码,这样运行速度和效率就会下降. 自动验证是ThinkPHP模型层提供的一种 ...
- ThinkPHP框架表单验证
对注册到test表的表单进行验证 在注册之前要对表单进行验证: 用户名非空验证,两次输入密码必须一致即相等验证,年龄在18~50之间即范围验证,邮箱格式正则验证. 自动验证是ThinkPHP模型层提供 ...
- angular表单验证实例----可用的代码
前段时间,公司做一个单页面,就是一个表单验证,早开始在菜鸟教程上关注了angular,所以下派上用场了 angular里面对于表单验证,设置了很多指令. 也就是说不用自己写一些逻辑,直接绑定指令就行. ...
随机推荐
- 免费web api接口大全
下面的接口来自互联网,部分功能需要付费 查询手机 http://www.yodao.com/smartresult-xml/search.s?type=mobile&q=手机号码 查询IP h ...
- vb6 webbrowser 事件捕获
Private WithEvents htmlDocument As htmlDocument Private WithEvents btnCompute As MSHTML.HTMLButtonEl ...
- IIS用户权限备忘
经常在网站部署到IIS遇到IIS帐户没有权限的问题,总是在看IIS Admin Service,但发现些帐户是有权限的. 其实针对相应的站点,应该看的是Application Pool的运行帐户,这个 ...
- Jquery使用ajax以及angularjs 动态模板加载并进行渲染
1. 源码 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <tit ...
- Linux-NTP-Server+Client
GMT/UTC/CST;/etc/localtime,/usr/share/zoneinfo/*时区文件,/etc/profile加TZ变量;硬件时间RTC,系统时间;date,hwclock,tzs ...
- 非ROOT用户启动Tomcat
[root@Z ~]# adduser tomcat [root@Z ~]# chown -R tomcat:tomcat /usr/local/tomcat/ [root@Z ~]# chown - ...
- linux中常用目录的作用
/bin 存放使用者最长用的命令,如:cp.ls.cat,等等. /boot 启动linux时使用的一些核心文件. /dev 是device(设备)的缩写,这个目录下是所有linux的外围设备. D ...
- oracle的listener.ora sqlnet.ora tnsnames.ora三个文件的关联性
学习:http://www.cnblogs.com/william-lee/archive/2010/10/20/1856261.html 之前因为安装的是windows server 2008 r2 ...
- Servlet Filter 1
1.Filter简介 )Filter也称之为过滤器,它是Servlet技术中最实用的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图 ...
- ios外派—本公司长年提供ios程序员外派业务(北京动点软件,可签合同)
北京动点飞扬长年提供ios工程师外派业务. 我公司程序员平均技术情况如下: 1.二年以上iPhone/ipad开发经验:2.熟练使用Xcode.Objective C编码技能:3.熟悉iOS开发框架, ...