2010-03-04 20 views
19

Estoy tratando de agregar un nodo de texto plano en formato zend; el propósito es mostrar solo texto estático.¿Cómo se puede agregar un 'nodo de texto plano' a un formulario zend?

El problema es que no conozco ninguna forma de hacerlo.

He usado 'description' pero eso TIENE que estar adjunto a un elemento de formulario.

¿Hay alguna manera de simplemente mostrar un texto como parte de un formulario? Zend considera todo como un elemento de forma, así que no puedo simplemente imprimirlo.

Ej:

A continuación se pondrá a prueba su habilidad en esto y lo otro. . . .

etc ...

¿Alguna idea?

+0

Creo que la mejor respuesta es de –

Respuesta

6

Puede haber una manera mejor, pero he creado un párrafo mediante el uso de un elemento de formulario personalizado y ver ayuda. Parece mucho código para algo tan simple. Por favor, avíseme si ha encontrado una forma más simplista de hacerlo.

//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

Me enfrenté al mismo problema y decidí que era mejor no usar Zend_Form en absoluto, pero usar directamente ver ayudantes (como Ruby on Rails) y validar en el modelo.

36

Zend tiene una vista de formulario nota helper (Zend_View_Helper_FormNote), que se puede utilizar para agregar texto.

Basta con crear un nuevo elemento de formulario (/application/forms/Element/Note.php):

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

En su formulario:

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

Aine Eso es simplemente fantástico –

+11

Añadir esta función en la clase: 'isValid función pública ($ value) { return true; } ' De esta forma, el elemento no desaparecerá en el proceso de validación. – juque

+1

Creo que esta debería ser la respuesta correcta de acuerdo con la reputación y la simplicidad de esta solución :) –

9

Adición de un elemento oculto con la no-escapado Descripción hace la cosa

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

Funciona perfectamente. Todavía está unido a un elemento, que, sin embargo, no se representa de esta manera.

Código tomado de: http://paveldubinin.com/2011/04/7-quick-tips-on-zend-form/

+8

Es por eso que amo a Zend. No en realidad no. –

+0

Esta es la mejor respuesta para mí ya que el elemento formNote (helper) desaparece cuando se envía el formulario POST-ed. –

5

Un poco tarde, pero pensé en tirar adentro de todos modos para el beneficio de la comunidad.

Aine ha golpeado el clavo en la cabeza. FormNote es lo que necesita si desea usar texto en Zend_Form. Sin embargo, puede usarlo sin necesidad de extender Zend_Form_Element_Xhtml. Vea el ejemplo a continuación:

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

Tenga en cuenta que puede usar texto y html con el ayudante formNote.

+0

Muy útil gracias. –

+0

Gracias. Este fue el único enfoque que funcionó para mí. – Ryan

+0

Esto funciona pero el elemento desaparecerá cuando valide el formulario, que puede ser o no lo que desea. Ver axiom82 respuesta anterior para la solución. – Countzero

5

Esta funcionalidad está integrada en Zend a través de Zend_Form_Element_Note.

$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

Esta es la respuesta correcta. No es necesario extenderlo inútilmente y anular '$ helper' con el mismo valor que se hace en la respuesta más votada. – danronmoon

+0

Sí, mucho más elegante y simple que las otras respuestas. Funciona perfectamente y evita la desaparición en la validación. – Countzero

Cuestiones relacionadas