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