Yii不依赖Model的表单生成器用法实例,Yii框架form表单用法实例

正文实例叙述了Yii达成多按键保存与提交何况不争持的兑现方式。这是十分的多初学都曾遭遇可是不知底怎样化解的难点,上边分享给大家供大家参照他事他说加以考察。具体方法如下:

Yii中唯有CForm技巧够运用submitted() 方法
,通过if($form->submitted(‘submit’))来判别是还是不是点击了buttonName为submit的按键,比如:

正文实例汇报了Yii不正视Model的表单生成器用法。分享给我们供大家参照他事他说加以考察。具体落到实处方式如下:

本文实例陈述了Yii框架form表单用法。共享给大家供大家仿效。具体方法如下:

Yii中唯有CForm本事够运用submitted() 方法
,通过if($form->submitted(‘submit’))来剖断是还是不是点击了buttonName为submit的开关,比方:
表单:

表单

暗中同意的Yii的表单生成器只必要这么就足以了:

采取表单

复制代码 代码如下:

 代码如下

复制代码 代码如下:

在 Yii 中拍卖表单时,平常要求以下步骤:

‘buttons’=>array(
        ‘preview’=>array(
            ‘type’=>’submit’,
            ‘label’=>yii::t(‘core’,’Show preview’),
        ),
        ‘draft’=>array(
            ‘type’=>’submit’,
            ‘label’=>yii::t(‘core’,’Save draft’),
        ),
        ‘submit’=>array(
            ‘type’=>’submit’,
            ‘label’=>yii::t(‘core’,’Submit’),
        ),
        CHtml::link(yii::t(‘core’,’Cancel’),yii::app()->homeUrl),
),

‘buttons’=>array(
        ‘preview’=>array(
            ‘type’=>’submit’,
            ‘label’=>yii::t(‘core’,’Show preview’),
        ),
        ‘draft’=>array(
            ‘type’=>’submit’,
            ‘label’=>yii::t(‘core’,’Save draft’),
        ),
        ‘submit’=>array(
            ‘type’=>’submit’,
            ‘label’=>yii::t(‘core’,’Submit’),
        ),
        CHtml::link(yii::t(‘core’,’Cancel’),yii::app()->homeUrl),
    ),

$form = new CForm(‘application.views.site.loginForm’, $model);

  1. 始建用于表现所要搜聚数据字段的模型类。
  2. 开创三个调控器动作,响应表单提交。
  3. 在视图脚本中开创与调整器动作相关的表单。

控制器:

控制器:

此处的application.views.site.loginForm也得以是陈设数组。可是尽管$model参数不传的话是会报错的:Fatal
error: Call to a member function isAttributeSafe()
诸如作者要生成二个组表单,不过本人不想借助于model,依据配置就足以生成一组表单该如何是好,

一、创造模型

复制代码 代码如下:

 代码如下

Yii不依赖Model的表单生成器用法实例,Yii框架form表单用法实例。暗许生成的表单的label是依靠$model->attributes来呈现的,所以本身做了2件事:

在编制表单所需的 HTML
代码以前,我们应该先分明出自最后用户输入的数码的档案的次序,以及那么些数量应顺应什么的法规。模型类可用于记录那一个新闻。正如模型章节所定义的,模型是保留用户输入和认证那几个输入的宗旨地点。

if($form->submitted(‘submit’))
 $model->status=Post::STATUS_PROPOSED;
else
 $model->status=Post::STATUS_DRAFT;

if($form->submitted(‘submit’))
                $model->status=Post::STATUS_PROPOSED;
            else
                $model->status=Post::STATUS_DRAFT;

1.接续CFormInputElement覆盖renderLabel方法,将label彰显成自个儿配置的element的label

有赖于使用用户所输入数据的办法,大家能够创立二种等级次序的模子。假诺用户输入被访谈、使用然后扬弃,大家理应创立一个表单模型;
假使用户的输入被访谈后要封存到数据库,大家应选拔一个Active
Record。两连串型的模子分享一样的基类 CModel
,它定义了表单所需的通用接口。

然则CActiveForm未有那一个点子,三个缓和方案是行使古典的html写法:

只是CActiveForm没有那么些格局,三个消除方案是利用古典的html写法:

2.接续CForm覆盖renderElement方法,$element instanceof
UCFormInputElement,并覆盖render方法,将Elements和getButtons循环输出
直接上代码:
app/protected/extensions/UCForm.php

1、定义模型类

复制代码 代码如下:

 代码如下

复制代码 代码如下:

举例成立为一个表单模型:

<input type=”submit” name=”submityes” value = <?php echo
Yii::t(‘common’, “Submit”)?>>
if(isset($_POST[‘submityes’]))

<input type=”submit” name=”submityes” value = <?php echo Yii::t(‘common’, “Submit”)?>>
if(isset($_POST[‘submityes’]))

<?php
/**
 * @author Ryan <yuansir@live.cn/yuansir-web.com>
 */
class UCForm extends CForm
{
 public function render()
 {
  $output = $this->renderBegin();
  foreach ($this->getElements() as $element)
  {
   $output .= $element->render();
  }
  foreach ($this->getButtons() as $button)
  {
   $output .= $button->render();
  }
  $output .= $this->renderEnd();
  return $output;
 }
 public function renderElement($element)
 {
  if (is_string($element))
  {
   if (($e = $this[$element]) === null && ($e =
$this->getButtons()->itemAt($element)) === null)
    return $element;
   else
    $element = $e;
  }
  if ($element->getVisible())
  {
   //UCFormInputElement 代替 CFormInputElement
   if ($element instanceof UCFormInputElement)
   {
    if ($element->type === ‘hidden’)
     return “<div style=”visibility:hidden”>n” .
$element->render() . “</div>n”;
    else
     return “<div class=”row field_{$element->name}”>n” .
$element->render() . “</div>n”;
   }
   else if ($element instanceof CFormButtonElement)
    return $element->render() . “n”;
   else
    return $element->render();
  }
  return ”;
 }
}

亚洲必赢官网 ,复制代码 代码如下:

就行了。
 
末尾运营作效果果如下图所示:

就行了。

再来个轻便的调用示例:

class LoginForm extends CFormModel
{
public $username;
public $password;
public $rememberMe=false;
}

亚洲必赢官网 1

 

复制代码 代码如下:

LoginForm 中定义了五本性子: $username, $password 和
$rememberMe。他们用来保存用户输入的用户名和密码,还应该有用户是不是想记住他的记名的选项。由于
$rememberMe 有二个暗许的值
false,相应的选项在先河化展现在登陆表单中时将是未勾选状态。

希望本文所述对大家基于Yii框架的PHP程序设计有所协助。

亚洲必赢官网 2

<?php
/**
 * @author Ryan <yuansir@live.cn/yuansir-web.com>
 */
class PlayerSearchController extends Controller
{
 public function actionIndex()
 {
  $config = array(
      ‘class’ => ‘ddd’,
      ‘action’=>”,
      ‘elements’ => array(
   ‘<br><br>’,
   ‘username’ => array(
       ‘label’=>’用户名啊’,//注意这里的label
       ‘type’ => ‘text’,
       ‘maxlength’ => 32,
       ‘value’ => ”
   ),
   ‘<br><br>’,
   ‘password’ => array(
       ‘label’=>’外号啊’,//注意这里的label
       ‘type’ => ‘password’,
       ‘maxlength’ => 32,
       ‘value’ => ”
   ),
      ),
      ‘buttons’ => array(
   ‘login’ => array(
       ‘type’ => ‘submit’,
       ‘label’ => ‘Login’,
   ),
      ),
  );
  $model = new CFormModel();
  $form = new UCForm($config, $model);
  $this->render(‘index’, compact(‘form’));
 }
}

咱俩将那个分子变量称为个性(attributes)并非性质(properties),以界别于常常的属性(properties)。性情(attribute)是三个注重用以存款和储蓄来自用户输入或数据库数据的性质(propertiy)。

你恐怕感兴趣的文章:

  • yii框架中的Url生产难点总结
  • YII模块完毕绑定二级域名的必须要经过的路
  • yii框架表单模型使用及以数组格局提交表单数据示例
  • Yii入门教程之目录结构、入口文件及路由设置
  • Yii获取当前url和域名的议程

期待本文所述对我们基于Yii框架的PHP程序设计有所扶助。

2、阐明证实准则

你或然感兴趣的稿子:

  • Yii2扩充验证码步骤详解
  • yii第22中学增添验证码的贯彻方式
  • Yii使用Captcha验证码的不二等秘书籍
  • yii完成创立验证码实例深入分析
  • yii2 modal弹窗之ActiveForm
    ajax表单异步验证
  • YII2.0之Activeform表单组件用法实例
  • yii用户注册表单验证实例
  • PHP
    Yii框架之表单验证准绳大全
  • Yii框架form表单用法实例
  • yii框架表单模型使用及以数组格局提交表单数据示例
  • Yii2简单达成给表单增多验证码的主意

要是用户提交了他的输入,模型被填充,我们就需求在使用前保证用户的输入是低价的。那是经过将用户的输入和一密密麻麻准则实践验证实现的。我们在
rules() 方法中内定那些证明法则,此方法应重临八个准绳配置数组。

复制代码 代码如下:

class LoginForm extends CFormModel
{
public $username;
public $password;
public $rememberMe=false;
private $_identity;
public function rules()
{
return array(
array(‘username, password’, ‘required’), //username 和 password
为必填项
array(‘rememberMe’, ‘boolean’), //rememberMe 应该是一个布尔值
array(‘password’, ‘authenticate’), //password
应被申明(authenticated)
);
}
public function authenticate($attribute,$params)
{
$this->_identity=new
UserIdentity($this->username,$this->password);
if(!$this->_identity->authenticate())
$this->addError(‘password’,’错误的用户名或密码。’);
}
}

rules() 重临的每种准则必须是以下格式:

复制代码 代码如下:

array(‘AttributeList’, ‘Validator’, ‘on’=>’ScenarioList’,
…附加选项)

其间的参数:

AttributeList(天性列表)是须求通过此准绳验证的表征列表字符串,每一天本性名字由逗号分隔;
Validator(验证器) 内定要执行验证的项目;
on 参数是可选的,它钦命此准绳应被选择到的景色列表;
附加选项 是贰个名值对数组,用于开头化相应验证器的属性值。

二、form表单更新数据时候选值难题

category表和post表是多对多,有当中等表relationships,分别记着category_id和post_id
Post.php model中 有关系

复制代码 代码如下:

‘cids’=>array(self::HAS_MANY,’Relationships’,’post_id’),

Category.php model中有措施:

复制代码 代码如下:

static public function getAllCategory(){
  return CHtml::listData(self::model()->findAll(), ‘id’, ‘name’);
}

比近年来后自身要更新一条数据,那条数据的栏目有两个,如若该小说id是21,是属于三个栏目,那么在relationship表中的数据就活该是

复制代码 代码如下:

id post_id category_id
1    21          1
2    21          2

里面id是流水,该小说的category是1和2.
该栏目标多寡笔者通过创立Relationship.php的ATiggo能够拿走,
_from中表单小编是那般写的:

复制代码 代码如下:

<div class=’row’>
  <?php echo $form->labelEx($model,’cid’); ?>
  <?php echo $form->checkBoxList($model,’cid’,
    Category::getAllCategory(),array(
     ‘style’=>’display:inline;’,
     ‘separator’=>”<br />n”,
     ‘template’=>'{input}{label}’,
     ‘labelOptions’=>array(‘style’=>’display:inline’)));
  ?>
  <?php echo $form->error($model,’cid’); ?>
</div>

题目是本身在_form
中不明白要肿么将数据填进去?正是本人在更新数据的时候,栏目应该选中才对。

对此view层数据的解耦,抛开checkBoxList,用dropDownList来讲举例:

1=>分类1,2=>分类2,表现层(view)中或许是”=>请选用,1=>分类1,2=>分类2。通过此,你想到了什么样?
有关Behavior是这么的,Behavior只是一种缓和方案,稍后再说。近来你要明了的是,你一旦要为Model提供一天性能(像cid[]),须要思考哪几点?(提示:要与CActiveRecord接地气)

希望本文所述对我们基于Yii框架的PHP程序设计有着帮忙。

您恐怕感兴趣的稿子:

  • yii框架通过调节台命令创造定时职务示例
  • Yii完结Command职务管理的格局详解
  • Yii2框架使用计划职责的办法
  • Yii框架达成记录日志到自定义文件的法门
  • Yii
    2.0怎么着利用页面缓存方法亲自过问
  • 解决Yii2邮件发送结果回到成功,但接受不到邮件的标题
  • yii
    2.0中表单小部件的施用方法身体力行
  • Yii框架批量布署数据扩充类的粗略完成情势
  • Yii2框架中国和日本记的应用方法分析
  • yii的CU汉兰达D操作实例详解
  • Yii2搭建后台并落到实处rbac权限决定总体实例教程
  • Yii框架创设cronjob定时职务的主意解析
网站地图xml地图