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

转载于:https://www.cnblogs.com/jerrypro/p/6412065.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值