yii2.0.12 form表单使用

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

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

  

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

namespace app\models;
use yii\base\Model;
class EntryForm extends Model{
public $name;
public $email;
public function rules(){
return[
[['name','email'],'required'],
['email','email'],
];
}
}

  控制器中要先引入model  :

    use app\models\EntryForm

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

view里面

<?php
use yii\helpers\Html;
use yii\widgets\ActiveForm;
?>
<?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="<?=\yii\helpers\Url::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 

  

posted @ 2017-06-17 15:40  *琴  阅读(697)  评论(0编辑  收藏  举报