zoukankan      html  css  js  c++  java
  • yii2.0.12 form表单使用

      好久没有回顾yii2了,现在回想,已经不记得原来是怎么做的了,现在写在这里,也不怕忘了

      首先,我们得创建一个模型,根据官网

      

        先将通读一下,不然很多都不知道为什么 ,简单完整的模型  

    namespace appmodels;
    use yiiaseModel;
    class EntryForm extends Model{
    public $name;
    public $email;
    public function rules(){
    return[
    [['name','email'],'required'],
    ['email','email'],
    ];
    }
    }

      控制器中要先引入model  :

        use appmodelsEntryForm

    public function actionIndex()
        {
            $model=new EntryForm();
            return $this->render('index',[
                'model'=>$model
            ]);
        }

    view里面

    <?php
    use yiihelpersHtml;
    use yiiwidgetsActiveForm;
    ?>
    <?php $form = ActiveForm::begin(); ?>
        <?= $form->field($model, 'name') ?>
        <?= $form->field($model, 'email') ?>
        <?= Html::submitButton('Login') ?>
    <?php ActiveForm::end(); ?>

    如果要进行表单提交等操作,应这样写

    <?php $form = ActiveForm::begin(
        [
            'action'=>['login/list'],
            'method'=>'post',
        ]
    ); ?>
        <?= $form->field($model, 'name') ?>
        <?= $form->field($model, 'email') ?>
        <?= Html::submitButton('提交') ?>
    <?php ActiveForm::end(); ?>

     当我们不想用yii2.0这样的来写表单,想用HTML时,需要这样

    <?=HTML::csrfMetaTags()?>
    <form action="<?=yiihelpersUrl::to(['update'])?>" method="post" >
        姓名:<input type="text" name="name" value="<?=Html::encode("{$data['name']}") ?>" ><br>
        邮箱:<input type="text" name="email" value="<?=Html::encode("{$data['email']}")  ?>" ><br>
        <input name="_csrf" type="hidden" id="_csrf" value="<?= Yii::$app->request->csrfToken ?>">
        <input type="submit" value="修改" >
    </form>

    如果页面中没有 

      <?=HTML::csrfMetaTags()?>

      <input name="_csrf" type="hidden" id="_csrf" value="<?= Yii::$app->request->csrfToken ?>">

    这两个的时候,我们写出来的HTML页面的form表单是没法提交的,因为这两个在页面上会生成一个csrf

      

    这两个csrf必须一致

    运行

    如果不想用yii2.0自带的样式  两种方式:

      在控制器中加上      public $layout=false; 或者将 $this->render 换成  $this->renderPartial

      

     数据接收

    public function actionList(){
            $request=Yii::$app->request;
            //接收所有参数
            $data=$request->bodyParams;
            $post=$request->post();
        }

    这两种方法均是接收所有的数据

    总结

      视图渲染的几种方法

        render :渲染一个 视图名 并使用一个 布局 返回到渲染结果。

        renderPartial:渲染一个 视图名 并且不使用布局

        renderAjax():渲染一个 视图名 并且不使用布局, 并注入所有注册的JS/CSS脚本和文件,通常使用在响应AJAX网页请求的情况下

    多看官网文档,多看,

      需要增删改查的可以去这里 http://www.cnblogs.com/qinmei/p/7055498.html 

      

  • 相关阅读:
    Web开发较好用的几个chrome插件
    SQL注入专题
    内存泄露检测之ccmalloc
    ruby method lambda block proc 联系与区别 next break return
    c++构造函数详解
    VIM使用系列之一—配置VIM下编程和代码阅读环境
    一个项目经理的经验总结
    如何改正拖拉的习惯
    PHP开源软件《个人管理系统》希望大家一起来开发
    PHP 开源软件《个人管理系统》——完善登录模块
  • 原文地址:https://www.cnblogs.com/qinmei/p/7040369.html
Copyright © 2011-2022 走看看