2013-09-16 3 views
3

Google을 통해 크롤링하는 데 드는 시간이 많습니다. 체크 박스 목록에 jQuery 버튼을 구현해야합니다. 문제는 양식 요소를 출력 할 때 코드가 INPUT을 삽입하고있을 때입니다. 라벨 바깥 쪽. 여기가 출력되는 방법은 다음과 같습니다젠드 폼 체크 박스 레이블을 입력하기 전에

<?php echo $this->formSoftware->checkbox;?> 

누구 방법에 대한 아이디어를 가지고 : 나는 양식 요소를 출력하고 방법을 Heres

$checkbox->addMultiOption($prev,$p); 
     $checkbox->setAttrib('id', 'checkbox'); 
     $checkbox->setSeparator(' '); 
     $checkbox->setDecorators(array(
      array('ViewHelper'), 
      array('Errors', array('tag' => 'div', 'class' => 'error')), 
      array('Label', array('tag' => 'span')), 
      array('HtmlTag', array('tag' => 'div', 'class' => 'label')), 
     )); 

: 여기

<label for="checkbox-1"><input type="checkbox" name="checkbox[]" id="checkbox-1" value="1" checked="checked">3DCrafter</label> 

가 장식 내 폼 요소이다 이 작업을 수행? 또는 Zend의 체크 박스에서 jQuery Button을 사용 하시겠습니까?

+0

원하는 html 출력을 추가 하시겠습니까? – Songo

답변

1

한 (매우 만족하지 않음) 솔루션은 설치에 예상대로 DOM jQuery를 사용하는 것입니다

//HTML 
//the checkboxes are children of their associated label 
<div id="container"> 
    <label for="cb1"><input type="checkbox" id="cb1" name="cb1" />Checkbox 1</label> 
    <label for="cb2"><input type="checkbox" id="cb2" name="cb2" checked="checked" />Checkbox 2</label> 
    <label for="cb3"><input type="checkbox" id="cb3" name="cb3" />Checkbox 3</label> 
</div> 

//javascript 
//for each label : find its target input among its descendants, 
//and place it before the label 
$('#container').find('label').each(function() { 
    var id = $(this).attr('for'); 
    $(this).find('#' + id).insertBefore(this); 
}); 

$('#container').buttonset(); 

fiddle

+0

인기 항목 !!!! 매력 감사합니다! 아, 늦게 회신 해 주셔서 죄송합니다. –

0

ZF1을 사용하는 경우 extends Zend_Form_Decorator_Abstract의 사용자 정의 Decorator 클래스를 만들고 양식에 addElementPrefixPath을 추가하여 사용자 정의 Decorator에 대한 경로를 등록하는 것이 좋습니다.

사용자 정의 데코레이터는 원하는 마크 업을 출력하기 위해 render() 메소드가 필요합니다.

ZF2에서 어떻게 작동하는지 잘 모르겠습니다.

0

기본적으로 레이블 데코레이터는 제공된 내용 앞에 붙습니다. 이는 다음 '게재 위치'옵션 중 하나를 지정하여 제어 할 수 있습니다.

PREPEND : 내용 앞에 라벨을 렌더링하십시오.

APPEND : 내용 뒤에 레이블을 렌더링하십시오.

IMPLICIT_PREPEND : label 태그 안에 요소를 렌더링하고 내용 앞에 레이블 텍스트를 배치하십시오.

IMPLICIT_APPEND : label 태그 안에 요소를 렌더링하고 내용 뒤에 레이블 텍스트를 배치하십시오.

그래서 귀하의 경우에 당신이 PREPEND 싶은 생각 :

$checkbox->addMultiOption($prev,$p); 
     $checkbox->setAttrib('id', 'checkbox'); 
     $checkbox->setSeparator(' '); 
     $checkbox->setDecorators(array(
      array('ViewHelper'), 
      array('Errors', array('tag' => 'div', 'class' => 'error')), 
      array('Label', array('tag' => 'span', 'placement' => 'PREPEND')), 
      array('HtmlTag', array('tag' => 'div', 'class' => 'label')), 
     )); 
+0

제안을 주셔서 감사합니다. 코드를 추가하고 여전히 슬프게도 라벨 사이에 입력을 넣습니다. –

0

여기 getLabel() 메서드는 Label을 인쇄하는 데 도움이됩니다.

<?php echo $this->formSoftware->checkbox->getLabel();?> 
<?php echo $this->formSoftware->checkbox;?>