上一节我们通过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;
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。