2

上一节我们通过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


后山人
272 声望39 粉丝

这个是一个典型的,前后端分离的开发框架,而且很多前后端代码,都可以很好的生成,无需写代码,大大减少程序员编写代码的数量。提高效率,降低成本!