happyendik/yii2-parser-dataprovider

0.1.1 2018-01-30 12:42 UTC

This package is not auto-updated.

Last update: 2024-09-29 06:46:14 UTC


README

  • 使用 Composer 安装包。
composer require happyendik/yii2-parser-dataprovider

使用方法

  • 创建一个自己的类 DataProvider,继承自抽象类 happyendik\ParserDataProvider 并实现该类的抽象方法
    /**
     * @return integer
     */
    protected function getItemsOnPage()
    {
        //Определение количества моделей на странице
    }
    /**
     * @return integer
     */
    protected function getPagesAmount()
    {
        //определение количества страниц
    }
    /**
     * @return integer
     */
    protected function getItemsAmount()
    {
        //определение количества моделей (например, новостей или статей) 
    }
    /**
     * @param integer $i
     * @return happyendik\ItemInterface[]
     */
    protected function getItemsForPage($i)
    {
        //Получение моделей для страницы
        //Метод должен возвращать массив объектов, реализующих happyendik/ItemInterface
            $items[] = new Item([
                'attribute1' => $item->attribute1,
                'attribut2' => $item->attribute2,
                .....
                'attributeN' => $item->attributeN
            ]);
        }

        return $items;
    }
}
  • 创建一个实现 happyendik\ItemInterface 的模型类,并列举所有模型属性
class Item extends Object implements happyendik\ItemInterface
{
    /**
     * @var string
     */
    public $title;

    /**
     * @var string
     */
    public $link;

    /**
     * @return array
     */
    public function getAttributes()
    {
        return [
            'title' => $this->title,
            'link' => $this->link
        ];
    }

    /**
     * @inheritdoc
     */
    public function getTitle()
    {
        return $this->title;
    }

    /**
     * @inheritdoc
     */
    public function getLink()
    {
        return $this->link;
    }
}

  • 将自定义的 CustomDataProvider 连接到 Yii2 中的默认数据提供者
    public function actionIndex()
    {
        $dataProvider = new CustomDataProvider([
            'pagination' => [
                'pageSize' => 20
            ]
        ]);

        return $this->render('index', [
            'dataProvider' => $dataProvider
        ]);
    }
  • 并使用标准的数据提供者操作方法
echo \yii\widgets\ListView::widget([
    'dataProvider' => $dataProvider,
    'itemView' => function ($model) {
        return '<a href="' . $model['link'] . '">' . $model['title'] . '</a>';
    }
]);