制作item和category的mvc视图总结

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 层的代码不需要修改。

时间: 2024-10-27 01:37:51

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

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

网站就必须用响应式布局吗?MVC视图展现模式之移动布局:http://www.cnblogs.com/dunitian/p/5213787.html 有人会疑问,为什么他能识别.mobile的后缀却不能识别例如:.mac .dnt 等等后缀呢?这些又是放在哪里的呢? mobile 这个后缀其实是存放在:DisplayModeProvider.Instance.Modes 里面的,我们监视一下,发现里面就一个mobile,还有一个是默认的 可以猜想,运行的时候是从上往下匹配的,“”的是通用匹配,那

ASP.NET MVC 视图(二)

ASP.NET MVC 视图(二) 前言 上篇中对于视图引擎只是做了简单的演示,对于真正的理解视图引擎的工作过程可能还有点模糊,本篇将会对由MVC框架提供给我们的Razor视图引擎的整个执行过程做一个粗略的讲解,目的在于让大家对Razor视图引擎的执行过程留个印象以便联想的思考到视图引擎的作用以及视图在MVC框架中的表示. ASP.NET MVC 视图 自定义视图引擎 Razor视图引擎执行过程 Razor视图的依赖注入.自定义视图辅助器 分段.分部视图的使用 Razor语法.视图辅助器 Raz

ASP.NET MVC 视图(三)

ASP.NET MVC 视图(三) 前言 上篇对于Razor视图引擎和视图的类型做了大概的讲解,想必大家对视图的本身也有所了解,本篇将利用IoC框架对视图的实现进行依赖注入,在此过程过会让大家更了解的视图,最后还会简单的介绍一下自定义的视图辅助器是怎么定义和使用的. ASP.NET MVC 视图 l  自定义视图引擎 l Razor视图引擎执行过程 l Razor视图的依赖注入.自定义视图辅助器 l  分段.分部视图的使用 l  Razor语法.视图辅助器   Razor视图的依赖注入 首先我们

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

原文:ASP.NET Core 入门教程 5.ASP.NET Core MVC 视图传值入门 一.前言 1.本教程主要内容 ASP.NET Core MVC 视图引擎(Razor)简介 ASP.NET Core MVC 视图(Razor)ViewData使用示例 ASP.NET Core MVC 视图(Razor)ViewBag使用示例 ASP.NET Core NVC 视图(Razor)强类型传值(ViewModel)页示例 2.本教程环境信息 软件/环境 说明 操作系统 Windows 10

ABP官方文档翻译 6.1.2 MVC视图

ASP.NET MVC 视图 介绍 AbpWebViewPage基类 介绍 ABP通过Abp.Web.Mvc nuget包集成到MVC视图.你可以如往常一样创建正常的MVC视图. AbpWebViewPage基类 ABP提供了AbpWebViewPage,它定义了一些有用的属性和方法.如果你使用启动模板创建的工程,那么你所有的views都自动从这个基类继承. AbpWebViewPage定义了L方法用于本地化,IsGranted方法用于授权,IsFeatureEnabled和GetFeature

ASP.NET MVC 视图(五)

ASP.NET MVC 视图(五) 前言 上篇讲解了视图中的分段概念.和分部视图的使用,本篇将会对Razor的基础语法简洁的说明一下,前面的很多篇幅中都有涉及到视图的调用,其中用了很多视图辅助器,也就是相当于传统webform中的服务器控件,它们都是给我们带来方便的.都是用于生成Html代码的. ASP.NETMVC 视图 l  自定义视图引擎 l Razor视图引擎执行过程 l  Razor视图的依赖注入.自定义视图辅助器 l  分段.分部视图的使用 l  Razor语法.视图辅助器 Razo

ASP.NET MVC 视图(一)

ASP.NET MVC 视图(一) 前言 从本篇开始就进入到了MVC中的视图部分,在前面的一些篇幅中或多或少的对视图和视图中的一些对象的运用进行了描述,不过毕竟不是视图篇幅说的不全面,本篇首先为大家讲解一下自定义视图引擎的定义和使用,由此慢慢的来了解视图引擎以及视图模块的工作过程. ASP.NETMVC 视图 l 自定义视图引擎简易示例 l Razor视图引擎执行过程 l  Razor视图的依赖注入.自定义视图辅助器 l  分段.分部视图的使用 l  Razor语法.视图辅助器 自定义视图引擎

ASP.NET MVC 视图(四)

ASP.NET MVC 视图(四) 前言 上篇对于利用IoC框架对视图的实现进行依赖注入,最后还简单的介绍一下自定义的视图辅助器是怎么定义和使用的,对于Razor语法的细节和辅助器的使用下篇会说讲到,本篇来讲解一下视图中的分段概念.和分部视图的使用. ASP.NET MVC 视图 自定义视图引擎 Razor视图引擎执行过程 Razor视图的依赖注入.自定义视图辅助器 分段.分部视图的使用 Razor语法.视图辅助器 分段.分部视图的使用 分段的使用 在ASP.NET MVC框架的Razor引擎中

在mvc视图中实现rdlc报表展示(补充)

上篇: 在mvc视图中实现rdlc报表展示 在上一遍中,由于不知道如何在aspx.cs后台中实例化abp的IxxxAppService.cs的接口,我采取的方式是在视图页中把查询出的数据存储到aspx的某个隐藏域中,然后在aspx.cs的后台事件中去获取,然后再赋值给ReportViewer控件. 这种方式其实很影响性能,会多次对查询的数据做页面存储和转换,而且当数据量较大时会出现页面无法加载数据的问题. 后来才知道abp框架实际上提供了一个全局方法专门去获取当前的ioc容器集合,通过传入接口泛