PHP开发框架YiiFramework教程(10)UI组件自定义组件
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了PHP开发框架YiiFramework教程(10)UI组件自定义组件,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2619字,纯文字阅读大概需要4分钟。
内容图文
![PHP开发框架YiiFramework教程(10)UI组件自定义组件](/upload/InfoBanner/zyjiaocheng/148/82b6690e8a944d6393e5af0c23548fa1.jpg)
class MyWidget extends CWidget{public function init(){// 此方法会被 CController::beginWidget() 调用} public function run(){// 此方法会被 CController::endWidget() 调用}}
本例通过扩展CInputWidget,定义一个值域输入UI组件-RangeInputField,也就是允许用户输入两个数字定义一个值 域范围。CInputWidget 支持使用CModel或者直接使用变量,RangeInputField 也保留了这一传统。
RangeInputField定义了三组属性。
$attributeFrom 和 $attributeTo 用于CModel,配合CHtml的 activeXXX 方法,activeXXX可以自动生成文本框 的标签和文本框。
属性$nameFrom,$nameTo,$valueFrom,$valueTo 程序员可以自行定义文本框的标签。
按照Yii 应用的缺省目录结构,新创建的RangeInputField 放在 protected/components 目录下,因此创建 protected/components/RangeInputField.php
class RangeInputField extends CInputWidget{public $attributeFrom;public $attributeTo; public $nameFrom;public $nameTo; public $valueFrom;public $valueTo; function run(){if($this->hasModel()){ echo CHtml::activeTextField($this->model, $this->attributeFrom);echo ' -> '; echo CHtml::activeTextField($this->model, $this->attributeTo);}else{echo CHtml::textField($this->nameFrom,$this->valueFrom); echo ' -> ';echo CHtml::textField($this->nameTo,$this->valueTo);}} /*** @return boolean whether this widget * is associated with a data model.*/ protected function hasModel(){return $this->model instanceof CModel&& $this->attributeFrom!==null&& $this->attributeTo!==null;}}
这样就自定义了一个新的UI组件RangeInputField ,只重载了run 方法, init 使用其父类中的方法。
下面 就可以来测试这个新创建的自定义UI组件RangeInputField, 我们使用FormModel (使用CModel)的方法来使用这个UI组件。
在protected/models下创建RangeFrom.php
class RangeForm extends CFormModel{public $from;public $to; function rules(){return array(array('from,to','numerical','integerOnly' =>true), array('from','compare','compareAttribute'=>'to','operator'=> '<=','skipOnError' => true),);}}
然后修改缺省Controller的缺省方法, protected/controllers/siteController.php 中 actionIndex 方法。
public function actionIndex(){$success=false;$model=new RangeForm(); if(!emptyempty($_POST['RangeForm'])){$model->attributes=$_POST['RangeForm'];if($model->validate()) $success=true; } $this->render('index', array('model' => $model,'success' => $success,));}
创建对应的View
Success! beginWidget('CActiveForm'); ?> errorSummary($model); ?> widget('RangeInputField',array('model'=>$model,'attributeFrom' => 'from','attributeTo' => 'to',)) ?>endWidget(); ?>
运行这个例子
以上就是PHP开发框架Yii Framework教程(10) UI组件 自定义组件的内容,更多相关内容请关注PHP中文网(www.gxlcms.com)!
内容总结
以上是互联网集市为您收集整理的PHP开发框架YiiFramework教程(10)UI组件自定义组件全部内容,希望文章能够帮你解决PHP开发框架YiiFramework教程(10)UI组件自定义组件所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。