如何正确地将设置传递给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; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |