本文实例讲述了yii框架小部件(widgets)用法。分享给大家供大家参考,具体如下:
小部件是在 中使用的可重用单元, 使用面向对象方式创建复杂和可配置用户界面单元。 例如,日期选择器小部件可生成一个精致的允许用户选择日期的日期选择器, 你只需要在视图中插入如下代码:
<?phpu yii\jui\datepick嚼一片苹果皮er;?><?= datepicker::widget(['name' => 'date']) ?>
yii提供许多优秀的小部件,比如, , jquery ui widgets, twitter bootstrap widgets。 接下来介绍小部件的基本知识,如果你想了解某个小部件请参考对应的类api文档。
小部件基本上在中使用, 在视图中可调用 yii\ba\widget::widget() 方法使用小部件。 该方法使用 数组初始化小部件并返回小部件渲染后的结果。 例如如下代码插入一个日期选择器小部件,它配置为使用俄罗斯语, 输入框内容为$model
的from_date
属性值。
<?phpu yii\jui\datepicker;?><?= datepicker::widget([ 'model' => $model, 'attribute' => 'from_date', 'language' => 'ru', 'dateformat' => 'php:y-m-d',]) ?>
一些小部件可在yii\ba\widget::begin() 和 yii\ba\widget::end() 调用中使用数据内容黄轩疑似新恋情曝光。 例如如下代码使用yii\widgets\activeform小部件生成一个登录表单, 小部件会在begin()
和0 end()
执行处分别生成<form>
的开始标签和结束标签, 中间的任何代码也会被渲染。
<?phpu yii\widgets\activeform;u yii\helpers\html;?> <?php $form = activeform::begin(['id' => 'login-form']); ?> <?= $form->field($model, 'urname') ?> <?= $form->field($model, 'password')->passwordinput() ?> <div class="form-group"> <?= html::submitbutton('login') ?> </div> <?php activeform::end(); ?>
注意和调用 yii\ba\widget::widget() 返回渲染结果不同, 调用 yii\ba\widget::begin() 方法返回一个可组建小部件内容的小部件实例。
注意: 当调用 yii\ba\widget::end() 的时候,一些小部件将使用 来调整封闭的内容。因此,当调用 yii\ba\widget::begin() 和 yii\ba\widget::end() 时,最好在同一个视图文件里。 不遵循这个规则可能会导致意外的输出。
小部件的全局默认值可以通过 di 容器配置:
\yii::$container->t('yii\widgets\linkpager', ['maxbuttoncount' => 5]);
详见 。
继承 yii\ba\widget 类并覆盖 yii\ba\widget::init() 和/或 yii\ba\widget::run() 方法可创建小部件。通常init()
方法处理小部件属性, run()
方法包含小部件生成渲染结果的代码。 渲染结果可在run()
方法中直接”echoed”输出或以字符串返回。
如下代码中hellowidget
编码并显示赋给message
属性的值, 如果属性没有被赋值,默认会显示”hello world”。
namespace app\components; u yii\ba\widget;u 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); }}
使用这个小部件只需在视图中简单使用如下代码:
<?phpu app\components\hellowidget;?><?= hellowidget::widget(['message' => 'good morning']) ?>
以下是另一种可在begin()
和 end()
调用中使用的hellowidget
, html编码内容然后显示。
namespac创业经验分享e app\components; u yii\ba\widget;u 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\ba\widget::begin() 时会创建一个新的小部件 实例并在构造结束时调用
init()
方法, 在end()
时会调用run()
方法并输出返回结果。
如下代码显示如何使用这种 hellowidget
:
<?phpu app\components\hellowidget;?><?php hellowidget::begin(); ?> content that may contain <tag>'s <?php hellowidget::end(); ?>
有时小部件需要渲染很多内容,一种更好的办法是将内容放入一个文件, 然后调用yii\ba\widget::render()方法渲染该视图文件, 例如:
public function run(){ return $this->render('hello');}
小部件的视图文件默认存储在widgetpath/views
目录,widgetpath
代表小部件类文件所在的目录。 假如上述示例小部件类文件在@app/components
下, 会渲染@app/components/views/hello.php
视图文件。 you may override 可以覆盖yii\ba\widget::getviewpath()方法自定义视图文件所在路径。
小部件是面向对象方式来重用视图代码。
创建小部件时仍需要遵循mvc模式,通常逻辑代码在小部件类, 展示内容在中。
小部件设计时应是独立的,也就是说使用一个小部件时候, 可以直接丢弃它而不需要额外的处理。 但是当小部件需要外部资源如css, javascript, 图片等会比较棘手, 幸运的时候yii提供 来解决这个问题。
当一个小部件只包含视图代码,它和很相似, 实际上,在这种情况下,唯一的区别是小部件是可以重用类, 视图只是应用中使用的普通php脚本。
本文发布于:2023-04-08 18:19:01,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/c365f470bad8c89a30c42f2089059264.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:Yii框架小部件(Widgets)用法实例详解.doc
本文 PDF 下载地址:Yii框架小部件(Widgets)用法实例详解.pdf
留言与评论(共有 0 条评论) |