您的位置:首页 > 编程语言 > PHP开发

yii表单小部件

2018-03-17 22:06 134 查看
[align=justify]
[/align][align=justify][/align]  要想使用表单小部件 必须使用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'[/b],'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'],
b846
'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;
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: