By accessing the website and accepting the Cookie Policy, you agree to use the cookies provided by the Site in accordance with to analyze traffic, remember your preferences, and optimize your experience.
October CMS - 快速入门 17 - 为组件添加选项
2018-10-24 13:20:06    282    0    0
emengweb

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

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

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

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

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

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;
    }

控制演员排序规则

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' => '以姓名降序排列'
        ];
    }

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

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;
    }


上一篇: October CMS - 快速入门 18 - 创建联系表单

下一篇: October CMS - 快速入门 16 - 建立简单的组件

282 人读过
文档导航