October CMS - 快速入門 17 - 爲組件添加選項

上一節咱們經過actor組件爲首頁添加了組件,顯示了演員的列表。
下面咱們將爲組件添加一些屬性:defineProperties
這個函數會返回一個數組,數組裏面的每一個數組將返回的是每一個選項php

添加顯示演員個數限制的選項

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

相關文章
相關標籤/搜索