2010-03-04 3 views
19

젠드 폼에 일반 텍스트 노드를 추가하려고합니다. 일부 정적 텍스트 만 디스패치하는 것이 목적입니다.젠드 폼에 '일반 텍스트 노드'를 추가하는 방법은 무엇입니까?

문제는 - 그러한 방법을 알지 못합니다.

'설명'을 사용했지만 양식 요소에 HAS를 첨부했습니다.

일부 텍스트를 양식의 일부로 표시하는 방법이 있습니까? Zend는 모든 것을 폼 요소로 간주하므로 인쇄 할 수 없습니다.

예 :

다음은 아무개 능력을에 테스트합니다. . . .

등 ...

의견이 있으십니까?

+0

나는 가장 좋은 대답은 단순히 환상적이다 Aine의 –

답변

6

더 나은 방법이있을 수 있지만 사용자 지정 양식 요소와보기 도우미를 사용하여 단락을 만들었습니다. 아주 간단한 코드를 많이 닮은 것 같습니다. 좀 더 단순한 방법을 찾았 으면 알려주세요.

//From your form, add the MyParagraph element 
$this->addElement(new Zend_Form_Element_MyParagraph('myParagraph')); 

class Zend_Form_Element_MyParagraph extends Zend_Form_Element 
{ 
    public $helper = 'myParagraph'; 
    public function init() 
    { 
     $view = $this->getView(); 
    } 
} 

class Zend_View_Helper_MyParagraph extends Zend_View_Helper_FormElement { 

    public function init() { 
    } 

    public function myParagraph() { 
     $html = '<p>hello world</p>'; 
     return $html; 
    } 

} 
3

나는 똑같은 문제에 직면했지만, Zend_Form을 전혀 사용하지 않는 것이 좋으며, Ruby on Rails와 같은 뷰 헬퍼를 직접 사용하고 모델에서 유효성을 검사하는 것이 더 좋습니다.

36

젠드는 텍스트를 추가하는 데 사용할 수있는 형태로 노트보기 도우미 (Zend_View_Helper_FormNote)가 있습니다.

그냥 새로운 형태의 요소 (/application/forms/Element/Note.php) 작성 : 양식에서

class Application_Form_Element_Note extends Zend_Form_Element_Xhtml 
{ 
    public $helper = 'formNote'; 
} 

:

$note = new Application_Form_Element_Note(
    'test', 
    array('value' => 'This is a <b>test</b>') 
); 
$this->addElement($note); 
+1

가 –

+11

클래스에이 기능을 추가 생각 : '공공 기능 isValid ($ 값)가 true { 반환; }' 그런 식으로 요소는 유효성 검사 과정에서 사라지지 않습니다. – juque

+1

이것은 이것이 명성과이 솔루션의 단순함에 따라 올바른 답이되어야한다고 생각합니다. –

9

비 이스케이프 설명과 함께 숨겨진 요소를 추가하기를 그 일을한다.

$form->addElement('hidden', 'plaintext', array(
    'description' => 'Hello world! <a href="#">Check it out</a>', 
    'ignore' => true, 
    'decorators' => array(
     array('Description', array('escape'=>false, 'tag'=>'')), 
    ), 
)); 

완벽하게 작동합니다. 그러나 아직 요소에 연결되어 있지만이 방법으로 렌더링되지는 않습니다.

코드에서 촬영 : http://paveldubinin.com/2011/04/7-quick-tips-on-zend-form/

+8

이것이 내가 젠드를 사랑하는 이유입니다. 아니 정말. –

+0

이것은 폼이 POST-ed 될 때 formNote (도우미) 요소가 사라짐에 따라 가장 좋은 답변입니다. –

5

조금 늦게하지만 난이 지역 사회의 이익을 위해 어쨌든 그것을 던져 줄 알았는데.

Aine이 머리에 못을 박았다. FormNote는 Zend_Form에서 텍스트를 사용하고자 할 때 필요합니다. 그러나 Zend_Form_Element_Xhtml을 확장하지 않고도 사용할 수 있습니다. 당신이 formNote 도우미와 텍스트 및 HTML 모두 사용할 수

$text = new Zend_Form_Element_Text('myformnote'); 
$text->setValue("Text goes here") 
    ->helper = 'formNote'; 

참고 : 아래의 예를 참조하십시오.

+0

매우 도움이되었습니다. –

+0

감사합니다. 이것은 나를 위해 일한 유일한 방법이었습니다. – Ryan

+0

이 방법이 효과적이지만 양식의 유효성을 검사 할 때 요소가 사라집니다. 양식은 원하는 것일 수도 있고 아닐 수도 있습니다. 해결책은 위의 axiom82 대답을 참조하십시오. – Countzero

5

이 기능은 Zend_Form_Element_Note를 통해 Zend에 내장되어 있습니다.

$note = new Zend_Form_Element_Note('forgot_password'); 
$note->setValue('<a href="' . $this->getView()->serverUrl($this->getView()->url(array('action' => 'forgot-password'))) . '">Forgot Password?</a>'); 
+0

정답입니다. 쓸모 없게 확장 할 필요가 없으며'$ helper'를 가장 많이 상향 된 답과 동일한 값으로 덮어 쓸 필요가 없습니다. – danronmoon

+0

네, 다른 답변보다 훨씬 더 우아하고 간단합니다. 완벽하게 작동하고 유효성 검사시 실종을 피할 수 있습니다. – Countzero

관련 문제