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

WBOY
풀어 주다: 2016-06-06 20:15:09
원래의
1235명이 탐색했습니다.

<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으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿