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. ubuntu获取root权限

    1.先在Terminal下设置root密码 执行 sudo passwd root 2.执行sudo su,然后根据提示来即可.

  2. queue for max elem, pop, push

    queue for max elem, pop, push 个人信息:就读于燕大本科软件project专业 眼下大三; 本人博客:google搜索"cqs_2012"就可以; 个人 ...

  3. vim -d file01 file02 diff file01 file02 对比两文件的不同

    [root@86 vhosts]# vim -d defaul.conf.bak zabbix.xinxianm.com.conf server { | server { listen 80; | l ...

  4. struts2防止表单重复提交的解决方案

    一.造成重复提交主要的两个原因:    在平时的开发过程中,经常可以遇到表单重复提交的问题,如做一个注册页面,如果表单重复提交,那么一个用户就会注册多次,重复提交主要由于两种原因. 1. 一是,服务器 ...

  5. Nginx - Windows下Nginx初入门,附CentOS下Nginx的安装

    公司刚使用nginx,预先学习下.鉴于机器没有Linux环境,在Windows熟悉下. 下载 目前(2015-07-11),nginx的稳定版本是1.8.0,在官网下载先,windows版的nginx ...

  6. vs2015开发so动态库linux

    #include <stdio.h> #include <dlfcn.h> typedef int(*fn_max)(int a, int b); int main() { p ...

  7. C# 注册表修改 立即生效 [转]

    修改注册表后不重启计算机边生效. const int WM_SETTINGCHANGE = 0x001A; const int HWND_BROADCAST = 0xffff; IntPtr resu ...

  8. Eclipse中复制android项目后要改动的地方

    1.清单文件中,改package=2.修改包名3.清单文件中app_name F3点进去修改名字

  9. ZooKeepr日志清理(转)

    转载请用注明:@ni掌柜 nileader@gmail.com 在使用zookeeper过程中,我们知道,会有dataDir和dataLogDir两个目录,分别用于snapshot和事务日志的输出(默 ...

  10. Linux系统查看公网IP地址

    curl members.3322.org/dyndns/getip