에 정의 된 경우에도 법인의 게터에서 정의되지 않은 인덱스 : 나는 심포니의 폼 빌더 양식을 contruct 때인덱스가 나는 다음과 같은 정보가 포함 된 엔티티 클래스가 생성자
class A
{
...
private $share_data;
public function __construct()
{
$this->share_data = array(
'title' => null,
'text' => null,
'image' => null,
'tab_image' => null
);
}
...
public function getTabImage()
{
return $this->share_data['tab_image'];
}
, 나는 다음과 같은 코드를 사용합니다 :
내 코드를 실행하려고하면$builder->add('tab_image', 'text', array('required'=>false, 'mapped'=>true, 'label'=>'a.form.tab.image_url'))
그래서 나는 오류를 주의를 얻을 : 정의되지 않은 인덱스 : tab_image에 ...
I f를 왜냐하면 내 데이터베이스에서 json_array (share_data)라는 열 유형이 있으므로 setShareData가 호출 될 것이기 때문입니다. 데이터베이스 값에서만 제목, 텍스트 및 이미지 필드가 json 객체에 정의됩니다. 따라서 객체는 tab_image 키가없는 배열에 아마도 덮어 쓰여질 것입니다. 나는 다음에 setShareData을 변경하여이 문제를 해결하려고 :
public function setShareData($shareData)
{
// merge so that null values are default
$this->share_data = array_merge($this->share_data, $shareData);
return $this;
}
는 생성자에서 설정 한 tab_index 키를 보존 바라고. 하지만 아직 정의되지 않은 색인 오류가 나타납니다. tab_image 키가 설정되지 않았을 때 null로 유지할 수있는 방법이 있습니까?
각 getter에서 isset을 확인하지 않고도 배열/json 객체에 새 키를 추가 할 수 있도록이 문제를 해결하고 싶습니다. 당연히 새롭게 생성 된 객체는 tab_image 키를 얻습니다.하지만이 객체는 이전 버전과 호환되기를 바랍니다.
알았어, 생성자가 수화에 호출되지 않았다는 것을 몰랐다. 감사. – juuga