Yii2 学习笔记之助手类

一、数组助手类

<?php
// 常用的就是建立哈希表,map()方法。一般在使用dropDownList的时候,
// 会从查询出来的对象列表中获取到这样的$array供其使用。
// 参考http://www.yiichina.com/doc/guide/2.0/helper-array
$array = [
    ['id' => '123', 'name' => 'aaa', 'class' => 'x'],
    ['id' => '124', 'name' => 'bbb', 'class' => 'x'],
    ['id' => '345', 'name' => 'ccc', 'class' => 'y'],
];
ArrayHelper::map($array, 'id', 'name');
// 结果是:
[
    '123' => 'aaa',
    '124' => 'bbb',
    '345' => 'ccc',
]

二、HTML 助手类

如果你知道 input 类型,更方便的做法是使用以下快捷方法:

<?php
yii\helpers\Html::buttonInput()
yii\helpers\Html::submitInput()
yii\helpers\Html::resetInput()
yii\helpers\Html::textInput()
yii\helpers\Html::activeTextInput()
yii\helpers\Html::hiddenInput()
yii\helpers\Html::activeHiddenInput()
yii\helpers\Html::passwordInput()
yii\helpers\Html::activePasswordInput()
yii\helpers\Html::fileInput()
yii\helpers\Html::activeFileInput()
yii\helpers\Html::textarea()
yii\helpers\Html::activeTextarea()
<?php
// Radios 和 checkboxes 在方法的声明上有一点点不同:
// http://www.yiichina.com/doc/guide/2.0/helper-html
<?= Html::radio('agree', true, ['label' => 'I agree']) ?>
<?= Html::activeRadio($model, 'agree', ['class' => 'agreement']) ?>

<?= Html::checkbox('agree', true, ['label' => 'I agree']) ?>
<?= Html::activeCheckbox($model, 'agree', ['class' => 'agreement']) ?>

// Dropdown list 和 list box 将会如下渲染:
<?= Html::dropDownList('list', $currentUserId, ArrayHelper::map($userModels, 'id', 'name')) ?>
<?= Html::activeDropDownList($users, 'id', ArrayHelper::map($userModels, 'id', 'name')) ?>

<?= Html::listBox('list', $currentUserId, ArrayHelper::map($userModels, 'id', 'name')) ?>
<?= Html::activeListBox($users, 'id', ArrayHelper::map($userModels, 'id', 'name')) ?>

三、HTML Activeform表单部件

<?php
textInput();         // 文本框
passwordInput();     // 密码框
radio(),radioList(); // 单选框
checkbox()           // 复选框 1
checkboxList();      // 复选框 2
dropDownList();      // 下拉框
hiddenInput();       // 隐藏域
textarea(['rows'=3]); // 文本域
fileInput();         // 文件上传
submitButton();      // 提交按钮
resetButtun();       // 重置按钮
<?php
<?= $form = ActiveForm::begin(['action' => ['test/getpost'], 'method'=>'post',]) ?>

<?= $form->field($model, 'username')->textInput(['maxlength' => 20]) ?>

<?= $form->field($model, 'create_at')->widget(DatePicker::className(), ['clientOptions' => ['dateFormat' => 'yy-mm-dd']])->textInput(['placeholder' => '创建时间']) ?>

<?= $form->field($model, 'password')->passwordInput(['maxlength' => 20]) ?>

<?= $form->field($model, 'sex')->radioList(['1'=>'男', '0'=>'女']) ?>

<?= $form->field($model, 'edu')->dropDownList(['1'=>'大学', '2'=>'高中', '3'=>'初中'], ['prompt'=>'请选择', 'style'=>'width:120px']) ?>

<?= $form->field($model, 'file')->fileInput() ?>

<?= $form->field($model, 'hobby')->checkboxList(['0'=>'篮球', '1'=>'足球', '2'=>'羽毛球', '3'=>'乒乓球']) ?>

<?= $form->field($model, 'info')->textarea(['rows'=>3]) ?>

<?= $form->field($model, 'userid')->hiddenInput(['value'=>3]) ?>

<?= Html::submitButton('提交', ['class'=>'btn btn-primary', 'name' =>'submit-button']) ?>

<?= Html::resetButton('重置', ['class'=>'btn btn-primary', 'name' =>'submit-button']) ?>

<?= ActiveForm::end() ?>

四、URL助手类

<?php
// 参考http://www.yiichina.com/doc/guide/2.0/helper-url
// 返回首页
$relativeHomeUrl = Url::home();

// /index.php?r=site/index
echo Url::to(['site/index']);

// /index.php?r=site/index&src=ref1#name
echo Url::to(['site/index', 'src' => 'ref1', '#' => 'name']);

// /index.php?r=post/edit&id=100     assume the alias "@postEdit" is defined as "post/edit"
echo Url::to(['@postEdit', 'id' => 100]);

// the currently requested URL
echo Url::to();

// /images/logo.gif
echo Url::to('@web/images/logo.gif');

// images/logo.gif
echo Url::to('images/logo.gif');

// http://www.example.com/images/logo.gif
echo Url::to('@web/images/logo.gif', true);

// https://www.example.com/images/logo.gif
echo Url::to('@web/images/logo.gif', 'https');

五、面包屑小部件

<?php
// 摘自view文件的代码
$this->params['breadcrumbs'][] = ['label' => '文章管理', 'url' => ['index']];
$this->params['breadcrumbs'][] = $this->title;

// 摘自layout文件的代码
echo Breadcrumbs::widget([
    'tag'=>'ol',
    'links' => isset($this->params['breadcrumbs']) ? $this->params['breadcrumbs'] : [],
]);

(完)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏闻道于事

Java实现word文档在线预览,读取office(word,excel,ppt)文件

10.4K70
来自专栏青蛙要fly的专栏

项目需求讨论-Vlayout来快速构建及扩展复杂界面

大家好,今天又带来了项目中具体遇到的需求。做一个首界面,该首界面有很多功能块,同时这些功能块是动态的,因为登录的人的权限的不同,会显示不同的功能块,因为功能模块...

24520
来自专栏GIS讲堂

Arcgis API for Android之GPS定位

先说说写这篇文章的原因吧,在群内讨论的过程中,有人提到了定位的问题,刚好,自己以前在做相关工作的时候做过相关的东西,所以就总结一下,给大家共享出来,由于本人水平...

15930
来自专栏菩提树下的杨过

silverlight中顺序/倒序异步加载多张图片

相册/图片切换广告等很多常用小应用中,服务器返回一组图片的uri,然后silverlight利用WebClient异步加载,如果要严格控制加载顺序的话,可以利用...

21770
来自专栏xingoo, 一个梦想做发明家的程序员

【插件开发】—— 9 编辑器代码分块着色-高亮显示!

前文回顾: 1 插件学习篇 2 简单的建立插件工程以及模型文件分析 3 利用扩展点,开发透视图 4 SWT编程须知 5 SWT简单控件的使用与布局搭...

29460
来自专栏JackieZheng

Spring读书笔记——bean加载

我们的日常开发几乎离不开Spring,他为我们的开发带来了很大的便捷,那么Spring框架是如何做到方便他人的呢。今天就来说说bean如何被加载加载。 我们在x...

22290
来自专栏阮一峰的网络日志

Redux 入门教程(一):基本用法

一年半前,我写了《React 入门实例教程》,介绍了 React 的基本用法。 React 只是 DOM 的一个抽象层,并不是 Web 应用的完整解决方案。有两...

47850
来自专栏腾讯数据库技术

时间精度引起MySQL主从不一致问题剖析

1. 主从数据不一致          近日接报某实例一个datetime字段主从数据不一致,其它数据暂未发现异常。第一反应可能是人为修改,如果用户有高权限帐...

33520
来自专栏進无尽的文章

编码篇-学会小用宏和条件编译

宏定义在C系开发中可以说占有举足轻重的作用。底层框架自不必说,为了编译优化和方便,以及跨平台能力,宏被大量使用,可以说底层开发离开define将寸步难行。而在更...

17410
来自专栏我的博客

左右滚动,带控制按钮

今天需要一个左右滚动图的js,从网上着了半天,修改调试了半天才弄好,于是就收藏了。不过以后真得看看js了 关键代码有注释:(红色部分是我加的注释) <table...

42960

扫码关注云+社区

领取腾讯云代金券