4
CakePhp 2.2.3을 사용하고 있으며 구성 요소를 만들고 있습니다.CakePHP의 구성 요소에 설정을 올바르게 전달하는 방법
구성 요소 :
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;
}
}
컨트롤러 : 난 다시 (INT)이 결과로 가지고
class ExampleController extends AppController {
public $components = array('Example');
public function index() {
$this->set('sum', $this->Example->sum(array('a1' => 2, 'a2' => 3)));
}
}
. 그러나 나는 그것이 5가되어야한다고 생각한다. 내가 뭘 잘못 했니?
왜 패스 한 다음 설정 매개 변수로 액세스 할 수 있습니까? 설정과 런타임 인수를 섞어서는 안됩니다. – mark
그래, 맞다고 이해하면 구성 요소에 공용 변수를 만들어야합니다. 설정이됩니다. 나는 이것을 $ this-> Example (array ('foo'=> 'bar'))'을 사용하여 바꿀 수있다. 그리고이 구성 요소의 메소드에서이 설정을 사용하여 '핵심'값을 설정할 수 있지만 컨트롤러 동작 에서처럼 일부 변수를 받아 들일 필요가 있습니다. 그리고이 변수를'$ this-> Example-> someMethod ($ first, $ second)'를 사용하여 전달할 수 있습니다. 그리고이 방법은이 두 가지를 모두 사용합니다 (settings + vars.)? 현재 설정을 전달하려면'public function __construct'에서 뭔가를 변경해야합니까? 아니면 만지지 말아야합니까? – Derp