View层index.phg 代码:

<?php

use yii\helpers\Html;
use yii\grid\GridView;
use yii\widgets\Pjax;
use frontend\models\Item;
/* @var $this yii\web\View */
/* @var $searchModel frontend\models\ItemSearch */
/* @var $dataProvider yii\data\ActiveDataProvider */ $this->title = 'Items';
$this->params['breadcrumbs'][] = $this->title;
?>
<div class="item-index"> <h1><?= Html::encode($this->title) ?></h1>
<?php Pjax::begin(); ?>
<?php // echo $this->render('_search', ['model' => $searchModel]); ?> <p>
<?= Html::a('Create Item', ['create'], ['class' => 'btn btn-success']) ?>
</p> <?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [
['class'=>'yii\grid\CheckboxColumn'],//复选框列显示
['class' => 'yii\grid\SerialColumn'],
[ //根据cate_id在model的静态方法里面查询category的cate_name显示
'attribute' =>'cate_id',
'value' => function($model){
return Item::get_type_text($model->cate_id);
},
//'filter' =>是下拉列表过滤器
'filter' => Item::get_type(),
],
'name',
'buy_price',
'sell_price',
[
'attribute' => 'created_at',
'format'=>['date','php:Y-m-d H:m:s'],//日期格式显示
],
[
'attribute' => 'updated_at',
'format'=>['date','php:Y-m-d H:m:s'],
],
[
'attribute' => 'status',
'value' => function($model){
return $model->status == 1?'在售':'停售';//判断model给的status数据,为1时候是在售
},
'filter' => ['停售','在售'],//下拉筛选框
],
// 'img_url:url', [
'class' => 'yii\grid\ActionColumn',//操作列 ],
],
]); ?>
<?php Pjax::end(); ?>
</div>

model层代码:

<?php

namespace frontend\models;

use Yii;
use frontend\models\Category;
/**
*
* @property string $id
* @property integer $cate_id
* @property string $name
* @property double $buy_price
* @property double $sell_price
* @property integer $created_at
* @property integer $updated_at
* @property integer $status
* @property string $img_url
*/
class Item extends \yii\db\ActiveRecord
{ public static $category;//使用了静态变量category function __construct() { parent::__construct(); if(is_null(SELF::$category)){//单一模式,只生成一个category。 SELF::$category=Category::find()->select(['cate_id','cate_name'])->all(); }
} /**
* @inheritdoc
*/
public static function tableName()
{
return 'item';
} /**
* @inheritdoc
*/
public function rules()
{
return [
[['cate_id', 'created_at', 'updated_at', 'status'], 'integer'],
[['buy_price', 'sell_price'], 'number'],
[['created_at', 'updated_at'], 'required'],
[['name'], 'string', 'max' => 100],
[['img_url'], 'string', 'max' => 255],
];
} /**
* @inheritdoc
*/
public function attributeLabels()
{
return [
'id' => '编号',
'cate_id' => '类别',
'name' => '品名',
'buy_price' => '采购价(HKD)',
'sell_price' => '销售价(CNY)',
'created_at' => '创建时间',
'updated_at' => '更新时间',
'status' => '状态',
'img_url' => 'Img Url',
];
} /**
* 通过栏目id获得栏目名称
* @param unknown $id
* @return Ambigous <unknown>
*/
public static function get_type_text($id){ /*
*array_column(array,column_key,index_key);
*php自带函数array_column(array,column_key,index_key)
*替换了(use) Yii\helpers\ArrayHelper::map();
*/
$datas =array_column(SELF::$category,'cate_name','cate_id'); return $datas[$id];
}

  //生成下拉筛选框,选择哪个以后key值会返给查询,key值就是item的cate_id
public static function get_type(){ $cat = array_column(SELF::$category,'cate_name','cate_id'); return $cat;
} }

itemSearch 层的代码不需要修改。

制作item和category的mvc视图总结的更多相关文章

  1. ASP.NET MVC 视图(三)

    ASP.NET MVC 视图(三) 前言 上篇对于Razor视图引擎和视图的类型做了大概的讲解,想必大家对视图的本身也有所了解,本篇将利用IoC框架对视图的实现进行依赖注入,在此过程过会让大家更了解的 ...

  2. ASP.NET MVC 视图(二)

    ASP.NET MVC 视图(二) 前言 上篇中对于视图引擎只是做了简单的演示,对于真正的理解视图引擎的工作过程可能还有点模糊,本篇将会对由MVC框架提供给我们的Razor视图引擎的整个执行过程做一个 ...

  3. MVC视图展现模式之移动布局解析-续集

    网站就必须用响应式布局吗?MVC视图展现模式之移动布局:http://www.cnblogs.com/dunitian/p/5213787.html demo:http://pan.baidu.com ...

  4. ASP.NET Core 入门教程 5、ASP.NET Core MVC 视图传值入门

    一.前言 1.本教程主要内容 ASP.NET Core MVC 视图引擎(Razor)简介 ASP.NET Core MVC 视图(Razor)ViewData使用示例 ASP.NET Core MV ...

  5. 【ASP.NET MVC系列】浅谈ASP.NET MVC 视图与控制器传递数据

    ASP.NET MVC系列文章 [01]浅谈Google Chrome浏览器(理论篇) [02]浅谈Google Chrome浏览器(操作篇)(上) [03]浅谈Google Chrome浏览器(操作 ...

  6. ASP.NET Core 入门笔记6,ASP.NET Core MVC 视图传值入门

    摘抄自:https://www.cnblogs.com/ken-io/p/aspnet-core-tutorial-mvc-view-renderdata.html 如有侵权请告知 一.前言 1.本教 ...

  7. ABP文档 - Mvc 视图

    文档目录 本节内容: 简介 AbpWebViewPage 基类 简介 ABP通过nuget包Abp.Web.Mvc集成到Mvc视图里,你可以像往常那样创建常规的视图. AbpWebViewPage 基 ...

  8. ASP.NET MVC 视图(五)

    ASP.NET MVC 视图(五) 前言 上篇讲解了视图中的分段概念.和分部视图的使用,本篇将会对Razor的基础语法简洁的说明一下,前面的很多篇幅中都有涉及到视图的调用,其中用了很多视图辅助器,也就 ...

  9. ASP.NET MVC 视图(四)

    ASP.NET MVC 视图(四) 前言 上篇对于利用IoC框架对视图的实现进行依赖注入,最后还简单的介绍一下自定义的视图辅助器是怎么定义和使用的,对于Razor语法的细节和辅助器的使用下篇会说讲到, ...

随机推荐

  1. jqury插件编写

    sae中短信验证码: ; (function($) { $(document).ready(function() { if (parent && parent.location.hre ...

  2. vim插件管理利器

    一.pathogen简介 通常情况下安装vim插件,通常是将所有的插件和相关的doc文件都安装在中一文件夹中,如将插件全部安装在/usr/share/vim/vim73/plugin/目录下,将帮助文 ...

  3. [svc]influxdb最佳实战-监控对比

    最近在搞容器的监控,遇到influxdb这个库,搞了两天,些许明白了些套路,做个记录,备忘.... 小结如下: influxdb go语言编写 默认情况influxdb创建的库关联autogen的RP ...

  4. CentOS安装使用git

    yum install git yum install git-gui (可选) git config --global user.name "gg" git config --g ...

  5. solr 简单搭建 数据库数据同步(待续)

    原来在别的公司负责过文档检索模块的维护(意思就是不是俺开发的啦). 所以就略微接触和研究了下文档检索. 文档检索事实上是全文检索.是通过一种技术把N多文档进行一定规律的分割归类,然后创建易于搜索的索引 ...

  6. 【高并发简单解决方案】redis缓存队列+mysql 批量入库+php离线整合

    原文出处: 崔小拽 需求背景:有个调用统计日志存储和统计需求,要求存储到mysql中:存储数据高峰能达到日均千万,瓶颈在于直接入库并发太高,可能会把mysql干垮. 问题分析 思考:应用网站架构的衍化 ...

  7. yii2中的事件和行为

    Event 事件 事件是为了解耦... 注册事件 使用"on add"添加属性,注册事件 使用on方法注册事件. 第三个参数$data是监听函数使用的参数, 第四个$append参 ...

  8. Ubuntu/Debian交叉编译安装ARM平台版本的ffmpeg

    1 准备工作 (1)libmp3lame库 下载:    wget http://downloads.sourceforge.net/lame/lame-3.99.tar.gz 解压 编译:./con ...

  9. python 加密方法总结

    MD5 def md5(str): import hashlib m = hashlib.md5() m.update(str) return m.hexdigest() base64 import ...

  10. spring boot初步尝试

    第一次知道spring boot这个项目是为在学习spring的时候,在官网上看到的,那个时候不知道这个项目是干嘛的,也就没再继续关注了 这些天实习没什么事做,一直没用spring框架了,就想着去官网 ...