yii表单小部件

 
 

  要想使用表单小部件 必须使用model

  在使用model时 需要加载表单小部件的组件

  分别是 yii\widgets\ActiveForm 和 yii\helpers\Html;


  然后在我们的model类中  定于各个表单小部件的name值

  定义规则

<?php


namespace frontend\models;
use yii\base\Model;
use yii\widgets\ActiveForm;
use yii\helpers\Html;

class Form extends Model
{
    public $name;
    public $pwd;
    public $sex;
    public $hobby;
    public $age;
    public $intruction;
    public function rules(){
        return [
            ['name', 'email'],
            [['name','pwd','sex','hobby','age'],'required'],

        ];
    }
    public function attributeLabels(){
        return[
            'name'=>'用户名',
            'pwd'=>'密码',
            'sex'=>'性别',
            'hobby'=>'爱好'
        ];
    }
    public function getage($start,$end){
        $arr = array();
        for($i = $start;$i<=$end;$i++){
            $arr[$i] = $i;
        }
        return $arr;
    }
    public  function arrtodata($data){
        $arr = array();
        foreach($data as $value){
            $arr[$value['kid']] = $value['kname'];
        }
        return $arr;
    }

    //array('kid'=>'kname')
}

在这个model里 多了三个方法  分别 是  将表头的英文变为汉字  attributeLabels

处理年龄需要的数据  getage

处理 数据库二维数组 变为我们需要的一维数组  当然 我们处理的比较死  你可以将需要的key 值自己处理处理成活的


接下来 是控制器层

我们需要将model和我们的控制器进行关联


 

<?php


namespace frontend\controllers;
use yii\web\Controller;
use frontend\models\Form;
use yii;
use db;

class FormController extends Controller
{
    public function actionIndex(){
        $model = new Form();
        $sql = 'select kid,kname from exam_tiku';
        $dat = Yii::$app->db->createCommand($sql)->queryAll();
        $age = $model->getage(18,100);
        $data = $model->arrtodata($dat);
        return $this->render('index',['model'=>$model,'age'=>$age,'data'=>$data]);
    }
    public function actionAdd(){
        $data = Yii::$app->request->post();
        echo $data['Form']['name'];
    }
}


最后是展示页面的views层

<?php


use yii\widgets\ActiveForm;
use yii\helpers\Html;

$form = ActiveForm::begin([
    'id' => 'login-form',
    'options' => ['class' => 'form-horizontal'],
    'action'=>'?r=form/add',
    'method'=>'post',
]) ?>
 
<?php  $model->sex=1 ?>   //默认选中单选按钮
<?= $form->field($model, 'name')->textInput() ?>
<?= $form->field($model, 'pwd')->passwordInput() ?>
<?= $form->field($model, 'sex')->radioList([0=>'男',1=>'女']) ?>
<?= $form->field($model, 'hobby')->checkboxList($data) ?>
<?= $form->field($model, 'age')->dropDownList($age) ?>
<?= $form->field($model, 'intruction')->textarea(['rows'=>3]) ?>

<div class="form-group">
    <div class="col-lg-offset-1 col-lg-11">
        <?= Html::submitButton('提交', ['class' => 'btn btn-primary']) ?>
    </div>
</div>
<?php ActiveForm::end() ?>

 

在这里我们使用的 文本框  下拉框  密码框  复选框 等等

更多请参考
http://blog.aulei521.com/2017/04/12/yii-%E8%A1%A8%E5%8D%95%E5%B0%8F%E9%83%A8%E4%BB%B6/

 

 

Yii框架中不是呀表单小部件必须要在表单页加一行

<input type="hidden" name="_csrf" id="_csrf" value="<?= Yii::$app->request->csrfToken?>">
不然提交不过去
或者是禁止验证  加一行
public $enableCsrfValidation = false;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值