2010-11-30 7 views
0

DisplayGroup을 사용하여 그룹의 몇 가지 요소를 렌더링합니다. 이제는이 그룹을 단일 테이블 행에 렌더링합니다. DisplayGroup의 Decorators는 이 아니며은 단순한 요소와 동일한 방식으로 작동합니다. 예 :Zend Framework의 DisplayGroup 데코레이터

$content = $this->getDisplayGroup('group'); 
$content->setDecorators(array(
     'FormElements', 
     array('HtmlTag', array('tag' => 'table', 'class' => 'element')), 
     )); 

이것은 단지 내 DisplayGroup의 말에 <table></table>을 넣습니다. 나는 또한 그들에게 별명을 시도했다 :

array(array('elementDiv' => 'HtmlTag'), array('tag' => 'table')), 
'FormElements', 
array(array('td' => 'HtmlTag'), array('tag' => 'table')), 

아직도 한 장소에두고

, 둘은 openOnlycloseOnly 시도 :

array(array('elementDiv' => 'HtmlTag'), array('tag' => 'table','openOnly'=>true)), 
'FormElements', 
array(array('td' => 'HtmlTag'), array('tag' => 'table','closeOnly'=>true)), 

을 그리고 그것은 여전히 ​​닫는 태그에 저장합니다. 이 값을 <td>으로 변경하면 모든 것이 정상적으로 작동하지만 <table>으로 누락 된 것이 있습니까?

+1

'HtmlTag' 데코레이터는 태그를 차별하지 않으므로 잘 동작해야합니다. 디스플레이 태그의 끝에 표 태그를 넣으면 실제 렌더링 된 소스가 표시됩니까? – Phil

+0

예. 스택에 데코레이터를 놓는 위치에 열리고 닫힌 태그를 나란히 놓습니다. –

+0

방금 ​​시도한 것과 같은 결과를 얻는 것처럼 보였지만 렌더링 된 마크 업을 조사하기 위해 방화 광을 사용하고 있는데 사실 실제로 표 태그가 표시 그룹을 둘러싸고있는 것을 발견했습니다 (그리고 페이지를 볼 때 이것을 볼 수 있습니다). 그리고 Zend/Form/Decorator/HtmlTag.php에서 코드를 단계별로 살펴 보자. 그래서 제 경우에는 기대했던대로 마크 업되지 않은 렌더링 된 마크 업에 대한 방화범의 해석입니다. 비슷한 문제가있을 수 있습니다. – jah

답변

0

그래서 jah이 맞았고 추가되지 않은 테이블은 실제로 소스 뷰어의 버그였습니다.

$group->setDecorators(array(

      'FormElements', 
     array('Description', array('escape' => false, 'tag' => false)), 
     array('HtmlTag', array('tag' => 'table', 'class' => 'element')), 
)); 

이것은 나를위한 트릭입니다. Description Decorator는 무엇을하는지는 모르지만 필요에 따라 테이블을 렌더링합니다.

관련 문제