개체에서 __invoke()를 호출 할 때 문제가 있습니다. __invoke() 메서드는 인스턴스 변수에 독립적입니다? ZF2 주입으로 $ this-> getView() -> render (...) (그렇지 않으면 getView()가 null을 반환 함)를 호출하기 때문에 템플릿에 직접 __invoke()를 호출해야하고 인스턴스 변수를 설정하고 싶습니다. 그곳에. 해결 방법은 없습니까?PHP 마법 메서드 __invoke, 빈 인스턴스 변수
namespace Person\Person\View\Helper;
use Zend\View\Helper\AbstractHelper;
class PersonShowWidget extends AbstractHelper
{
protected $model = null;
public function __construct(array $options = null)
{
$this->parseOptions($options);
}
public function __invoke()
{
var_dump($this->model); //returns null
return $this->getView()->render('person/show/show_widget', array(
'title' => 'Cliente',
'model' => $this->model,
)
);
}
public function setOptions(array $options = null)
{
$this->parseOptions($options);
}
protected function parseOptions(array $options = null)
{
if (!is_null($options) && is_array($options)) {
if (isset($options['model'])) {
$model = $options['model'];
if (isset($model['id'])) {
$this->model['id'] = $model['id'];
} else {
throw new \Exception;
}
if (isset($model['form'])) {
$this->model['form'] = $model['form'];
} else {
throw new \Exception;
}
}
}
var_dump($this->model); //returns valid data
}
}
내가 __invoke를 호출하기 전에 몇 가지 옵션 또는 setOptions을 방법으로 생성자를 호출해야합니까() :
내 코드를 참조하십시오.
감사합니다.
내가 개념적으로 잘못을하고 있어요, 내가 할 노력하고있어가, 컨트롤러의 새로운 PersonShowWidget을 만들 setOptions을 방법으로 구성하는 것입니다 및 뷰에 표시 (반향)하십시오. 어쩌면 getView() 메소드가 null을 반환합니다. 왜냐하면 뷰 안의 ViewManager를 통과하지 못하기 때문입니다. – vicaba
@vicaba 내 편집을 참조하십시오 .. – bitWorking
제가 지금 말씀 드리는 방식대로하고 있는데 문제는 컨트롤러에서 viewhelper를 생성하면 setView()가 호출되지 않는다는 것입니다. 이제 컨트롤러에서 렌더링하려고합니다. 모달로 변환하고 단추를 눌렀을 때만 코드를 보내려고합니다. – vicaba