Yii2Yii::$container设置类的setter为何无效呢?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Yii2Yii::$container设置类的setter为何无效呢?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2952字,纯文字阅读大概需要5分钟。
内容图文
![Yii2Yii::$container设置类的setter为何无效呢?](/upload/InfoBanner/zyjiaocheng/242/aacb371098f24c2fb35be4c286cac649.jpg)
if(isset($_COOKIE['gridShowRows'])){
Yii::$container->set('yii\data\BaseDataProvider',[
'pagination'=>[
'pageSize'=>$_COOKIE['gridShowRows']
]
]);
}
yii\data\BaseDataProvider有一个setPagination的方法。
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.');
}
}
设置后不起效果。
但是下面的设置却又效果:
if(isset($_COOKIE['gridShowRows'])){
Yii::$container->set('yii\data\Pagination',[
'pageSize'=>$_COOKIE['gridShowRows']
]);
}
yii\data\Pagination有一个setPageSize的方法:
/**
* @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 < $this->pageSizeLimit[0]) {
$value = $this->pageSizeLimit[0];
} elseif ($value > $this->pageSizeLimit[1]) {
$value = $this->pageSizeLimit[1];
}
}
$this->_pageSize = $value;
}
}
回复内容:
if(isset($_COOKIE['gridShowRows'])){
Yii::$container->set('yii\data\BaseDataProvider',[
'pagination'=>[
'pageSize'=>$_COOKIE['gridShowRows']
]
]);
}
yii\data\BaseDataProvider有一个setPagination的方法。
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.');
}
}
设置后不起效果。
但是下面的设置却又效果:
if(isset($_COOKIE['gridShowRows'])){
Yii::$container->set('yii\data\Pagination',[
'pageSize'=>$_COOKIE['gridShowRows']
]);
}
yii\data\Pagination有一个setPageSize的方法:
/**
* @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 < $this->pageSizeLimit[0]) {
$value = $this->pageSizeLimit[0];
} elseif ($value > $this->pageSizeLimit[1]) {
$value = $this->pageSizeLimit[1];
}
}
$this->_pageSize = $value;
}
}
检查传入的数组中的参数名。
内容总结
以上是互联网集市为您收集整理的Yii2Yii::$container设置类的setter为何无效呢?全部内容,希望文章能够帮你解决Yii2Yii::$container设置类的setter为何无效呢?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。