Yii框架小部件(Widgets)用法实例详解_php实例

来源:脚本之家  责任编辑:小易  

属性(properties)事件(events)行为(behaviors)单独或者组合使用这些特征,可以让yii框架的类变得更加易用和可定制。举个例子,引入一个用户交互组件[yii\\jui\\DataPicker\\data picker wigets],可以很轻松的在视图中生成一个日期选择控件(jquery ui date picker).use yii\\jui\\DatePicker;echo DatePicker:widgetwww.zgxue.com防采集请勿采集本网。

本文实例讲述了Yii框架小部件(Widgets)用法。分享给大家供大家参考,具体如下:

小部件

PersistenceConfig(持久层配置) 我们想要一个配置了所有可用仓库的MONGODB配置。在这个简单的应用中我们只用了一个仓库,所以配置也非常的简单: Configuration class PersistenceConfig {

小部件是在 视图 中使用的可重用单元, 使用面向对象方式创建复杂和可配置用户界面单元。 例如,日期选择器小部件可生成一个精致的允许用户选择日期的日期选择器, 你只需要在视图中插入如下代码:

顾名思义,action 毫无疑问就是用来描述控制器的动作,一般都有 actionIndex,即默认动作。举例: class PageController extends Controller { public function actionIndex() { echo 'default

<?phpuse yii\jui\DatePicker;?><?= DatePicker::widget(['name' => 'date']) ?>

传感器是一种检测装置,能感受到被测量的信息,并能将感受到的信息,按一定规律变换成为电信号或其他所需形式的信息输出,以满足信息的传输、处理、存储、显示、记录和控制等要求。传感器的特点

Yii提供许多优秀的小部件,比如active form, menu, jQuery UI widgets, Twitter Bootstrap widgets。 接下来介绍小部件的基本知识,如果你想了解某个小部件请参考对应的类API文档。

使用小部件

这个没办法比较的,其实工具只是一个辅助作用!不过非要比较的话,当然只老牌的Zend Studio了专门为PHP定做的吗!

小部件基本上在views中使用, 在视图中可调用 yii\base\Widget::widget() 方法使用小部件。 该方法使用 配置 数组初始化小部件并返回小部件渲染后的结果。 例如如下代码插入一个日期选择器小部件,它配置为使用俄罗斯语, 输入框内容为$modelfrom_date属性值。

另外在Yii框架中使用phpunit发现当我执行phpunit unit/BBCodeTest.php命令时,能正常执行,而执行phpunit webTest/protected/tests/unit/BBCodeTest.php 命令时报错!提示找不到CTestCase类,这是Yii框架

<?phpuse yii\jui\DatePicker;?><?= DatePicker::widget([ 'model' => $model, 'attribute' => 'from_date', 'language' => 'ru', 'dateFormat' => 'php:Y-m-d',]) ?>

一些小部件可在yii\base\Widget::begin()yii\base\Widget::end() 调用中使用数据内容。 例如如下代码使用yii\widgets\ActiveForm小部件生成一个登录表单, 小部件会在begin() 和0 end()执行处分别生成<form>的开始标签和结束标签, 中间的任何代码也会被渲染。

<?phpuse yii\widgets\ActiveForm;use yii\helpers\Html;?> <?php $form = ActiveForm::begin(['id' => 'login-form']); ?> <?= $form->field($model, 'username') ?> <?= $form->field($model, 'password')->passwordInput() ?> <div class="form-group"> <?= Html::submitButton('Login') ?> </div> <?php ActiveForm::end(); ?>

注意和调用 yii\base\Widget::widget() 返回渲染结果不同, 调用 yii\base\Widget::begin() 方法返回一个可组建小部件内容的小部件实例。

注意: 当调用 yii\base\Widget::end() 的时候,一些小部件将使用 输出缓冲 来调整封闭的内容。因此,当调用 yii\base\Widget::begin()yii\base\Widget::end() 时,最好在同一个视图文件里。 不遵循这个规则可能会导致意外的输出。

配置全局默认值

小部件的全局默认值可以通过 DI 容器配置:

\Yii::$container->set('yii\widgets\LinkPager', ['maxButtonCount' => 5]);

详见 依赖注入容器 "实践中的应用" 一节

创建小部件

继承 yii\base\Widget 类并覆盖 yii\base\Widget::init() 和/或 yii\base\Widget::run() 方法可创建小部件。通常init() 方法处理小部件属性, run() 方法包含小部件生成渲染结果的代码。 渲染结果可在run()方法中直接"echoed"输出或以字符串返回。

如下代码中HelloWidget编码并显示赋给message 属性的值, 如果属性没有被赋值,默认会显示"Hello World"。

namespace app\components; use yii\base\Widget;use yii\helpers\Html; class HelloWidget extends Widget{ public $message; public function init() { parent::init(); if ($this->message === null) { $this->message = 'Hello World'; } } public function run() { return Html::encode($this->message); }}

使用这个小部件只需在视图中简单使用如下代码:

<?phpuse app\components\HelloWidget;?><?= HelloWidget::widget(['message' => 'Good morning']) ?>

以下是另一种可在begin()end()调用中使用的HelloWidget, HTML编码内容然后显示。

namespace app\components; use yii\base\Widget;use yii\helpers\Html; class HelloWidget extends Widget{ public function init() { parent::init(); ob_start(); } public function run() { $content = ob_get_clean(); return Html::encode($content); }}

如上所示,PHP输出缓冲在init()启动,所有在init()run()方法之间的输出内容都会被获取,并在run()处理和返回。

信息: 当你调用 yii\base\Widget::begin() 时会创建一个新的小部件 实例并在构造结束时调用init()方法, 在end()时会调用run()方法并输出返回结果。

如下代码显示如何使用这种 HelloWidget:

<?phpuse app\components\HelloWidget;?><?php HelloWidget::begin(); ?> content that may contain <tag>'s <?php HelloWidget::end(); ?>

有时小部件需要渲染很多内容,一种更好的办法是将内容放入一个视图文件, 然后调用yii\base\Widget::render()方法渲染该视图文件, 例如:

public function run(){ return $this->render('hello');}

小部件的视图文件默认存储在WidgetPath/views目录,WidgetPath代表小部件类文件所在的目录。 假如上述示例小部件类文件在@app/components下, 会渲染@app/components/views/hello.php视图文件。 You may override 可以覆盖yii\base\Widget::getViewPath()方法自定义视图文件所在路径。

最佳实践

小部件是面向对象方式来重用视图代码。

创建小部件时仍需要遵循MVC模式,通常逻辑代码在小部件类, 展示内容在视图中。

小部件设计时应是独立的,也就是说使用一个小部件时候, 可以直接丢弃它而不需要额外的处理。 但是当小部件需要外部资源如CSS, JavaScript, 图片等会比较棘手, 幸运的时候Yii提供 资源包 来解决这个问题。

当一个小部件只包含视图代码,它和视图很相似, 实际上,在这种情况下,唯一的区别是小部件是可以重用类, 视图只是应用中使用的普通PHP脚本。

更多关于Yii相关内容感兴趣的读者可查看本站专题:《Yii框架入门及常用技巧总结》、《php优秀开发框架总结》、《smarty模板入门基础教程》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总

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

在控制器中获取ids就能获取选中的值ids=Yii:app()->request->getParam('ids');内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • yii2.0实现创建简单widgets示例
  • yii2.0小部件gridview(两表联查/搜索/分页)功能的实现代码
  • yii2框架之listview小部件的使用方法
  • yii 2.0中表单小部件的使用方法示例
  • yii框架安装简明教程
  • 从零开始学yii2框架(一)通过composer安装yii2框架
  • 从零开始学yii2框架(五)快速生成代码工具 gii 的使用
  • 从零开始学yii2框架(六)高级应用程序模板
  • 从零开始学yii2框架(三)扩展插件yii2-gird
  • 从零开始学yii2框架(二)通过 composer 安装扩展插件
  • php的yii框架中view视图的使用进阶
  • 从零开始学yii2框架(四)扩展插件yii2-kartikgii
  • thinkphp实现的省市区三级联动功能示例
  • php分页代码学习示例分享
  • php中的trait 特性及作用
  • php连接sftp并下载文件的方法教程
  • thinkphp关于session的操作方法汇总
  • php使用ffmpeg获取视频播放总时长与码率等信息
  • 在服务端进行目录建立、删除,文件上传、删除的过程的php代码
  • laravel框架使用seeder实现自动填充数据功能
  • destoon会员注册提示“数据校验失败(2)”解决方法
  • 深入http响应状态码速查表的详解
  • php yii框架的问题,默认的admin视图中,如何用widget提交数据
  • Yii框架预定义的组件有哪些
  • yii框架中,如何利用下拉菜单进行筛选
  • YII框架中控制器中的actions函数有什么用?难道只是用来做验证么
  • yii框架createurl找到不到控制里的方法
  • YII框架中控制器中的actions函数有什么用?难道只是用来做验证么
  • 求教大神们;YII框架的小物件使用方法
  • yii 框架用什么开发工具开发比较好?比如Zend Studio 之类的开发工具?
  • 如何在yii框架中使用coreseek
  • PHP,shopnc转别的框架,换哪个好,个人觉得tp和yii都还好,别的框架
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全php基础php技巧php实例php文摘php模板首页php编程php实例yii框架入门及常用技巧总结php优秀开发框架总结smarty模板入门基础教程php面向对象程序设计入门教程php字符串(string)用法总结php+mysql数据库操作入门教程php常见数据库操作技巧汇总yii2.0实现创建简单widgets示例yii2.0小部件gridview(两表联查/搜索/分页)功能的实现代码yii2框架之listview小部件的使用方法yii 2.0中表单小部件的使用方法示例yii框架安装简明教程从零开始学yii2框架(一)通过composer安装yii2框架从零开始学yii2框架(五)快速生成代码工具 gii 的使用从零开始学yii2框架(六)高级应用程序模板从零开始学yii2框架(三)扩展插件yii2-gird从零开始学yii2框架(二)通过 composer 安装扩展插件php的yii框架中view视图的使用进阶从零开始学yii2框架(四)扩展插件yii2-kartikgiithinkphp实现的省市区三级联动功能示例php分页代码学习示例分享php中的trait 特性及作用php连接sftp并下载文件的方法教程thinkphp关于session的操作方法汇总php使用ffmpeg获取视频播放总时长与码率等信息在服务端进行目录建立、删除,文件上传、删除的过程的php代码laravel框架使用seeder实现自动填充数据功能destoon会员注册提示“数据校验失败(2)”解决方法深入http响应状态码速查表的详解php获取数组长度的方法(有实例)微信公众平台实现获取用户openid教你如何使用php session使用php生成二维码的两种方法(带php发送get、post请求的6种方法简php中把stdclass object转array的微信公众平台网页授权获取用户基laravel框架数据库curd操作、连贯php删除数组中空值的方法介绍php从数组中删除元素的四种方法实smarty获得当前url的方法分享symfony2安装的方法(2种方法)php中有关字符串的4个函数substr、strrchphp foreach循环使用详解与实例代码微信公众号开发之语音消息识别php代码php实现微信提现功能(微信商城)wordpress后台中实现图片上传功能的实例讲codeigniter框架the uri you submitted hthinkphp中钩子的两种配置调用方法详解php web木马扫描器代码 v1.0 安全测试工具
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved