젠드 프레임 워크에 데코레이터가 얼마나 심하게 설계되었는지 내 머리를 찢어 버리고 있습니다. 저는 간단한 프론트 엔드 작업이어야하는 무언가를하는 방법을 알아 내려고 노력하면서 오늘과 많은 다른 날을 보냈습니다.Zend_Forms 및 ZF의 데코레이터 - 하나의 컨테이너에 라벨, 입력 및 오류 표시
내 생각에 Zend_Forms 및 데코레이터는 ZF의 최악의 부분이며 백엔드 및 프론트 엔드는 적절하게 구분되지 않습니다. 양식 클래스가 HTML을 인쇄하는 방법을 지시하는 이유는 무엇입니까?
[Username ]
[Password ]
: 나는 레이블 같은 분야의 상단에 앉아 싶어서 이렇게 원하는 이유는
<div class="labeledField">
<label for="username">Username</label>
<input type="text" id="username" name="username" />
</div>
<div class="labeledField">
<label for="password">Password</label>
<input type="password" id="password" name="password" />
</div>
:
내가 찾는 모든
는 같은simple
입니다
이 방법을 사용하면 입력을 선택하면 레이블이 약간 흐려지지만 입력을 선택하면 레이블이 그대로 유지됩니다. JS를 사용하면 입력 상자에 내용이 있으면 레이블이 숨겨집니다. 이 기능은 Apple 장바구니에 있습니다.
저는 Zend_form의 유효성 검사 부분을 매우 좋아합니다. 백엔드 코드가 HTML의 모양을 지정하지 않으면 어떻게하면 프론트 엔드에 배치 될 수 있는지 알고 싶습니다.
<div class="labeledField">
<?php
echo $this->form->username->getLabel();
echo $this->form->username->getElement();
$errors = $this->form->username->getErrors();
if (sizeof($errors) > 0) {
?>
<div class="errors">
<?php
foreach($errors as $error) {
?>
<li><?php echo $error ?></li>
<?php
}
?>
</div>
<?php
}
?>
</div>
그러나 다음 템플릿이 날 수있는 것 : 내 의견으로는/뷰/폴더에 액세스 할 수있는 frontender에서 (템플릿을해야 하나 또는 내가 좋아하는 뭔가를 할 수 있어야에서
그냥 $ this-> form을 echo하고 내가 원하는 필드에 위와 같은 포맷을 사용하게하십시오.
그래, Zend_Form은 내가 가장 좋아하는 구성 요소입니다. 필자의 조언 : Zend_Form을 버리고 validator 클래스를 사용하여 직접 코딩 한 양식의 입력을 확인하십시오. –