yii2.0 如何创建from表单

Posted *琴

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了yii2.0 如何创建from表单相关的知识,希望对你有一定的参考价值。

  好久没有回顾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 

  

以上是关于yii2.0 如何创建from表单的主要内容,如果未能解决你的问题,请参考以下文章

Yii2 - 表单验证规则:如何使用自定义验证功能或替代?

yii2.0 用Html方式生成表单

yii2.0 Activeform表单部分组件使用方法

yii2.0 Activeform表单部分组件使用方法

yii2.0 Activeform表单部分组件使用方法

yii2.0单文件上传和多文件上传