为了账号安全,请及时绑定邮箱和手机立即绑定

yii中mvc简单的代码处理

标签:
PHP

代码讲解yii简单的mvc处理“套路”,写的是一个表单请求处理流程
视图代码,下面为yii自带form,html组件写的,也可用传统form写
1.视图文件头部加上

<?php
use yii\bootstrap\ActiveForm;
use yii\helpers\Html;
?>

2.视图代码用yii写是这样的,具体看注释

 <!-- 提示信息 -->
                        <?php if(Yii::$app->session->hasFlash('info')){
                            echo Yii::$app->session->getFlash('info');
                            };?>
                            <!-- 表单开始 -->
                        <?php $form = ActiveForm::begin([
                            'options'=>['class'=>'new_user_form inline-input'],
                            'fieldConfig'=>[
                                'template' => '<div class="span12 field-box">{label}{input}{error}</div>'
                            ],
                        ]);?>
                        <!-- 输入框 -->
                        <?php echo $form->field($model, 'username')->textInput(['class' => 'span9']); ?>
                        <?php echo $form->field($model, 'useremail')->textInput(['class' => 'span9']); ?>
                        <?php echo $form->field($model, 'userpass')->passwordInput(['class' => 'span9']); ?> 
                        <?php echo $form->field($model, 'repass')->passwordInput(['class' => 'span9']); ?>         
                        <div class="span11 field-box actions">
                        <!-- 按钮 -->
                          <?php echo Html::submitButton('添加',['class'=>'btn-glow primary']);?>
                                <span>或者</span>
                          <?php echo Html::resetButton('取消',['class'=>'reset']);?>
                        </div>
                        <?php ActiveForm::end();?>
                         <!-- 表单结束 -->

控制器controller是这样的,具体看代码解释

<?php

namespace app\modules\controllers;
use yii\web\Controller;
use yii\data\Pagination;
use app\models\User;
use app\models\Profile;
use Yii;

class UserController extends Controller
{
    public function actionReg()
    {
        // 设置视图公共部分,如果不需要公共部分视图,$this->layout设为false
        $this->layout = 'layout1';
        // 创建一个user模型
        $model = new User;
        // 判断是否为post请求,然后将post过来的数据传到model进行处理,下面代码都是套路
        if(Yii::$app->request->isPost){
            // 接收post过来的数据
            $post = Yii::$app->request->post();
            // reg为model处理数据,返回true或者false
            if ($model->reg($post)) {
                // 请求的callback
                Yii::$app->session->setFlash('info','添加用户成功');
            }
        }
        // 请求后处理输入框
        $model->userpass = '';
        $model->repass = '';
        return $this->render("reg",['model'=>$model]);
    }
}

模型代码

<?php

namespace app\models;

use yii\db\ActiveRecord;
use Yii;

class User extends ActiveRecord
{
  public $repass;
  public $loginname;
  public $rememberMe;
  // 模型对于的表,s省略前缀的写法
  public static function tableName()
  {
    return "{{%user}}";
  }
  // 表单验证的写法,required,unique,email,compare等为一些自带的验证;而像validatePass,则为自定义验证方法
  public function rules()
  {
    return [
    ['loginname', 'required', 'message' => '登录名不能为空', 'on' => ['login']],
    ['username', 'required', 'message' => '用户名不能为空', 'on' => ['reg']],
    ['username','unique','message'=>'用户名已被注册','on'=>['reg']],
    ['useremail', 'required', 'message' => '用户邮箱不能为空', 'on' => ['reg','regbymail']],
    ['useremail', 'email', 'message' => '用户邮箱格式不正确', 'on' => ['reg','regbymail']],
    ['useremail','unique','message'=>'用户邮箱已被注册','on'=>['reg','regbymail']],
    ['userpass', 'required', 'message' => '密码不能为空', 'on' => ['reg','login']],
    ['repass', 'required', 'message' => '确认密码不能为空', 'on' => ['reg']],
    ['repass','compare','compareAttribute'=>'userpass','message'=>'两次密码输入不一致','on'=>['reg']],
    ['userpass', 'validatePass', 'on' => ['login']],
    ];
  }
  public function reg($data, $scenario = 'reg')
  {
    // 注册验证方法,要验证那些字段,到上面rules中进行注册
    $this->scenario = $scenario;
    // 下面的代码也是套路,载入controller传过来的数据,和验证数据;最后进行数据库(save,deleteAll,updateAll等)处理
    if ($this->load($data) && $this->validate()) {
      $this->username = $data['User']['username'];
      $this->userpass = $data['User']['userpass'];
      $this->createtime = time();
      $this->userpass = md5($this->userpass);
      // 存数据库
      if ($this->save(false)) {
        return true;
      }
      return false;
    }
    return false;
  }

}
点击查看更多内容
7人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
JAVA开发工程师
手记
粉丝
105
获赞与收藏
190

关注作者,订阅最新文章

阅读免费教程

感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消