加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

如何正确地将设置传递给CakePHP中的组件

发布时间:2020-12-13 17:14:37 所属栏目:PHP教程 来源:网络整理
导读:我正在使用CakePhp 2.2.3而且我正在制作一个组件. 零件: App::uses('Component','Controller');class ExampleComponent extends Component {public $settings = array();protected $_defaults = array( 'a1' = null,'a2' = 2);public function __construct(
我正在使用CakePhp 2.2.3而且我正在制作一个组件.

零件:

App::uses('Component','Controller');
class ExampleComponent extends Component {

public $settings = array();

protected $_defaults = array(
    'a1' => null,'a2' => 2
);

public function __construct(ComponentCollection $collection,$settings = array()) {

    $settings = array_merge($this->_defaults,$settings);
    $this->settings = $settings;

}

public function sum() {
    $sum = $this->settings['a1'] + $this->settings['a2'];
    return $sum;
}

}

控制器:

class ExampleController extends AppController {
public $components = array('Example');

public function index () {
    $this->set('sum',$this->Example->sum(array('a1' => 2,'a2' => 3)));
}
}

结果我回来了(int)2.但我认为它应该是5.
我做错了什么?

解决方法

您正在错误的时间传递默认设置.
使用以下行实例化组件时会调用__construct.

public $components = array('Example');

因此,如果您想将参数传递给组件初始化,您可以这样做:

public $components = array('Example'=>array('a1'=>'2','a2'=>'3'));

如果要继续使用以下行传递参数:

$this->set('sum','a2' => 3)));

然后你必须调整你的sum()函数:

public function sum($new_settings) {

    $sum = $new_settings['a1'] + $new_settings['a2'];
    return $sum;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读