Правильно ли вызывать методы контроллера и получать доступ к его атрибутам через переменную $this
, когда внутри представления?
Допустим, Im работает 'индекс' вид из контроллера 'Calcs':
Calcs контроллер:
class Calcs extends Controller{
public function index(){
$this->set('number', 1);
$this->set('number2', 4);
$this->set('number3', 5);
$this->set('number4', 2);
}
public function doComplexStuff($n1, $n2){
return $n1 + $n2;
}
}
Просмотр "index.phtml":
// Html ...
echo $this->doComplexStuff($number, $number2); //5
echo $this->doComplexStuff($number3, $number4); //7
Тогда у меня есть еще один контроллер, который также использует «doComplexStuff» от «Calcs»
class Another extends Controller{
public function randomView(){
$calcsController = ControllerFactory::getController('Calcs');
$myRandomNumber = $calcsController->doComplexStuff(rand(), rand());
$this->set('myRandomNumber', $myRandomNumber);
}
}
Фактически, вычисления обычно должны быть в модели. – plalx
Ну, согласен. Я не хотел усложнять ситуацию с помощью модельного слоя, когда речь идет о связи между представлением и контроллером. Но да, более точный ответ заключается в том, что вычисления должны быть в модели. –