上一節咱們經過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; }