October CMS - 快速入门 17 - 为组件添加选项

上一节我们通过actor组件为首页添加了组件,显示了演员的列表。
下面我们将为组件添加一些属性:defineProperties
这个函数会返回一个数组,数组里面的每个数组将返回的是每个选项

添加显示演员个数限制的选项

File:plugins\raiseinfo\movies\components\Actors.php

    public function defineProperties()
    {
        return [
          'results' =>  [
              'title' => '显示演员的个数',
              'description' => '您希望显示多少个演员?',
              'default' => 0,
              'validationPattern' => '^[0-9]+$',
              'validationMessage' => '只允许输入数字。'
          ]
        ];
    }

clipboard.png

clipboard.png

但是,我们只是设置了选项,这个选项并没有对数据进行控制。下面解决使用这个选项控制数据的显示:

File:plugins\raiseinfo\movies\components\Actors.php

    protected function loadActors()
    {
        $query = Actor::all();
        if($this->property('results') > 0){
            $query = $query->take($this->property('results'));
        }
        return $query;
    }

clipboard.png

clipboard.png

控制演员排序规则

File:plugins\raiseinfo\movies\components\Actors.php

    public function defineProperties()
    {
        return [
          'results' =>  [
              'title' => '显示演员的个数',
              'description' => '您希望显示多少个演员?',
              'default' => 0,
              'validationPattern' => '^[0-9]+$',
              'validationMessage' => '只允许输入数字。'
          ],

          'sortOrder' => [
              'title' => '演员排序',
              'description' => '对演员排序',
              'type' => 'dropdown',
              'default' => 'name asc'
          ]

        ];
    }
File:plugins\raiseinfo\movies\components\Actors.php

    public function getSortOrderOptions()
    {
        return [
            'name asc' => '以姓名升序排列',
            'name desc' => '以姓名降序排列'
        ];
    }

clipboard.png

好的,现在选项显示出来。接下来实现对数据的控制

File:plugins\raiseinfo\movies\components\Actors.php

protected function loadActors()
    {
        $query = Actor::all();

        if($this->property('sortOrder') == 'name asc'){
            $query = $query->sortBy('name');
        }

        if($this->property('sortOrder') == 'name desc'){
            $query = $query->sortByDesc('name');
        }

        if($this->property('results') > 0){
            $query = $query->take($this->property('results'));
        }
        return $query;
    }

clipboard.png

clipboard.png

clipboard.png

clipboard.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值