上一节咱们经过actor组件为首页添加了组件,显示了演员的列表。
下面咱们将为组件添加一些属性:defineProperties
这个函数会返回一个数组,数组里面的每一个数组将返回的是每一个选项php
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; }