Yii2 Yii::$container设置类的setter为何无效呢?

WBOY
リリース: 2016-06-06 20:15:09
オリジナル
1205 人が閲覧しました

<code>if(isset($_COOKIE['gridShowRows'])){
    Yii::$container->set('yii\data\BaseDataProvider',[
        'pagination'=>[
            'pageSize'=>$_COOKIE['gridShowRows']
        ]
    ]);
}</code>
ログイン後にコピー
ログイン後にコピー

yii\data\BaseDataProvider有一个setPagination的方法。

<code>public function setPagination($value)
    {
        if (is_array($value)) {
            $config = ['class' => Pagination::className()];
            if ($this->id !== null) {
                $config['pageParam'] = $this->id . '-page';
                $config['pageSizeParam'] = $this->id . '-per-page';
            }
            $this->_pagination = Yii::createObject(array_merge($config, $value));
        } elseif ($value instanceof Pagination || $value === false) {
            $this->_pagination = $value;
        } else {
            throw new InvalidParamException('Only Pagination instance, configuration array or false is allowed.');
        }
    }</code>
ログイン後にコピー
ログイン後にコピー

设置后不起效果。

但是下面的设置却又效果:

<code>if(isset($_COOKIE['gridShowRows'])){
    Yii::$container->set('yii\data\Pagination',[
        'pageSize'=>$_COOKIE['gridShowRows']
    ]);
}</code>
ログイン後にコピー
ログイン後にコピー

yii\data\Pagination有一个setPageSize的方法:

<code>/**
     * @param integer $value the number of items per page.
     * @param boolean $validatePageSize whether to validate page size.
     */
    public function setPageSize($value, $validatePageSize = false)
    {
        if ($value === null) {
            $this->_pageSize = null;
        } else {
            $value = (int) $value;
            if ($validatePageSize && isset($this->pageSizeLimit[0], $this->pageSizeLimit[1]) && count($this->pageSizeLimit) === 2) {
                if ($value pageSizeLimit[0]) {
                    $value = $this->pageSizeLimit[0];
                } elseif ($value > $this->pageSizeLimit[1]) {
                    $value = $this->pageSizeLimit[1];
                }
            }
            $this->_pageSize = $value;
        }
    }</code>
ログイン後にコピー
ログイン後にコピー

回复内容:

<code>if(isset($_COOKIE['gridShowRows'])){
    Yii::$container->set('yii\data\BaseDataProvider',[
        'pagination'=>[
            'pageSize'=>$_COOKIE['gridShowRows']
        ]
    ]);
}</code>
ログイン後にコピー
ログイン後にコピー

yii\data\BaseDataProvider有一个setPagination的方法。

<code>public function setPagination($value)
    {
        if (is_array($value)) {
            $config = ['class' => Pagination::className()];
            if ($this->id !== null) {
                $config['pageParam'] = $this->id . '-page';
                $config['pageSizeParam'] = $this->id . '-per-page';
            }
            $this->_pagination = Yii::createObject(array_merge($config, $value));
        } elseif ($value instanceof Pagination || $value === false) {
            $this->_pagination = $value;
        } else {
            throw new InvalidParamException('Only Pagination instance, configuration array or false is allowed.');
        }
    }</code>
ログイン後にコピー
ログイン後にコピー

设置后不起效果。

但是下面的设置却又效果:

<code>if(isset($_COOKIE['gridShowRows'])){
    Yii::$container->set('yii\data\Pagination',[
        'pageSize'=>$_COOKIE['gridShowRows']
    ]);
}</code>
ログイン後にコピー
ログイン後にコピー

yii\data\Pagination有一个setPageSize的方法:

<code>/**
     * @param integer $value the number of items per page.
     * @param boolean $validatePageSize whether to validate page size.
     */
    public function setPageSize($value, $validatePageSize = false)
    {
        if ($value === null) {
            $this->_pageSize = null;
        } else {
            $value = (int) $value;
            if ($validatePageSize && isset($this->pageSizeLimit[0], $this->pageSizeLimit[1]) && count($this->pageSizeLimit) === 2) {
                if ($value pageSizeLimit[0]) {
                    $value = $this->pageSizeLimit[0];
                } elseif ($value > $this->pageSizeLimit[1]) {
                    $value = $this->pageSizeLimit[1];
                }
            }
            $this->_pageSize = $value;
        }
    }</code>
ログイン後にコピー
ログイン後にコピー

检查传入的数组中的参数名。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!