Estoy buscando un simple pedazo de código que me deja agregar el siguiente código html en mi zend forma:

<div id="wmd-button-bar" class="wmd-panel"></div>

Eso es todo, tiene que estar por encima de mi ‘método’ elemento en la forma, pero eso es todo. Para una simple acción que no puede encontrar cualquiera de los métodos que no me implican el aprendizaje de la ciencia de los cohetes (que yo.e Zend Decoradores).

Soy un novato en JavaScript de usuario unfortunatley. Im sólo haciendo un plug and play arrastrar y soltar en el momento. Necesito la respuesta en PHP si voy a entender.

OriginalEl autor bluedaniel | 2010-04-02

10 Comentarios

  1. 28

    La única manera que se me ocurre en este momento es la de agregar un elemento ficticio a la forma y eliminar todos los decoradores, excepto un ‘HtmlTag» con los atributos que se especifica en tu pregunta. La eliminación de los decoradores significa que el elemento no se hizo sólo el decorador HtmlTag será renderizado.

    así, suponiendo que su forma es de $formulario:

    $form->addElement(
        'hidden',
        'dummy',
        array(
            'required' => false,
            'ignore' => true,
            'autoInsertNotEmptyValidator' => false,
            'decorators' => array(
                array(
                    'HtmlTag', array(
                        'tag'  => 'div',
                        'id'   => 'wmd-button-bar',
                        'class' => 'wmd-panel'
                    )
                )
            )
        )
    );
    $form->dummy->clearValidators();

    Nota que desea evitar la validación del elemento. Esta es sólo una manera – existen otras.

    De salida:

    <div id="wmd-button-bar" class="wmd-panel"></div>

    Hay una buena artículo que describe decoradores.

    +1 por ejemplo, para ayudar OP con decoradores, en lugar de aconsejar el uso de ellos (como se menciona en la pregunta)
    sí He llegado a través de que el artículo muchas veces, pero yo sólo necesitaba una acción específica. Im va a mudar a otro idioma tan pronto como este porject está firmado. Gracias por su ayuda
    Una muy buena ayuda………….. Salvar a mi un montón de tiempo… Gracias @jah..

    OriginalEl autor jah

  2. 8

    Usted puede crear su propio ayudante de vista
    libraray–App>Ver>Ayuda>PlainTextElemet.php

    Crear una carpeta en su carpeta de la biblioteca es que el nombre de la Aplicación
    así que una carpeta con ese nombre se Vista así que en Vista de crear Ayudante Carpeta en Ayudante de la carpeta de crear
    una clase con PlainTextElement nombre de la misma

     class App_View_Helper_PlainTextElement extends Zend_View_Helper_FormElement {
    
            public function PlainTextElement($name, $value = null, $attribs = null) {
                $info = $this->_getInfo($name, $value, $attribs);
                extract($info); //name, value, attribs, options, listsep, disable
                if (null === $value) {$value = $name;}
    
                return $value;
              }
    
        }

    A continuación, en libray mismo por encima de crear una clase de la Aplicación>>Elemento>PlainText.php

    Y poner siguientes del código de esta clase

    class App_Form_Element_PlainText extends Zend_Form_Element_Xhtml {
    
        public $helper='PlainTextElement';
    
        public function isValid($value){
    
            return true;
        }
    }

    Ahora en su forma puede crear cada código html que te gusta:

    $someValue = '<div id="wmd-button-bar" class="wmd-panel"></div>';
    
            $this->addElement(new App_Form_Element_PlainText('pliantext1', array(
                                'value'=>$someValue,
            )));

    No olvides en su aplicación.ini agregar fllowing líneas:

     autoloaderNamespaces.app = "App_"
     resources.view.helperPath.App_View_Helper="App/View/Helper"
    este no es un trabajo para mí y tengo este error: Excepción capturada por formulario: Plugin por nombre ‘PlainTextElement» no se encuentra en el registro
    con algunos cambios en mi opinión ayudante funciona bien ahora, gracias.

    OriginalEl autor user1400

  3. 5

    Usted puede tratar de esta manera, no config, sólo una clase de extensión
    referencia: http://www.zfsnippets.com/snippets/view/id/50

    <?php
    
    /**
     * Form note element
     *
     * @author Ruslan Zavackiy <[email protected]>
     * @package elements
     */
    
    /**
     * Loads helper Zend_View_Helper_FormNote
     */
    
    class Custom_Form_Element_Note extends Zend_Form_Element_Xhtml
    {
        public $helper = 'formNote';
    }
    ?>

    luego

    $companies->addElement('note', 'companyNote', array(
                'value' => '<a href="javascript:;" id="addCompany">Add Company</a>'
            ));

    OriginalEl autor Tri.Le

  4. 1

    Cómo sobre el uso de algunas de JQuery:

    Algo como:

    <script language="javascript">
        $(document).ready(function() {
            $('#submit-element').append('<div id="wmd-button-bar" class="wmd-panel"></div>');
        });
    </script>

    OriginalEl autor richie

  5. 0
    • Crear una personalizada Decorador que devolver la etiqueta(o cualquier cosa):

      clase My_Decorator_CustomHtml se extiende Zend_Form_Decorator_Abstract { 
      público de la función render($contenido) 
      { 
      $elemento = $this->getElement(); 
      if (!$elemento instanceof Zend_Form_Element) { 
      return $contenido; 
      } 
      if (null === $elemento->getView()) { 
      return $contenido; 
      } 
      $html = $elemento->getLabel(); 
      return $html; 
      } 
      
      
      }
    • Lugar esta en el decorador de la ruta

      <pre>$form->addElementPrefixPath('My_Decorator',
      'My/Decorator/',
      'decorator');</pre>

    • Crear el elemento y poner el custom html en la etiqueta

      $html = '<div id="wmd-button-bar" class="wmd-panel">some text....</div>';
      $element = new Zend_Form_Element_Hidden('hidden-input', array(
      'label'=>$html,
      ));
      $element->setDecorators(array('CustomHtml'));
      //add it to the form
      $form->addElement($element);

    y que es

    OriginalEl autor mohamed elbou

  6. 0

    Vengo con un elemento Html que se pueden incluir en la propia biblioteca

    class Application_Form_Element_Html extends Zend_Form_Element_Xhtml
    {
        /**
         * Build the element and set the decorator callback to generate the html.
         */
        public function __construct($name, $options)
        {
            //Get the HTML to generate.
            $html = $options['html'];
    
            //Set the decorators for the generation.
            $this->setDecorators(array
            (
                array('Callback', array
                (
                    'callback' => function($content) use ($html)
                    {
                        return $html;
                    }
                ))
            ));
        }
    }

    Para incluir, no te olvides de hacer

    $form->addPrefixPath('Application_Form_Element', APPLICATION_PATH . '/forms/Element', 'element');

    A continuación, en el formulario de inicialización simplemente llame a:

    $form->addElement($this->createElement('html', 'info', array
    (
        'html' => '<div>My awesome HTML</div>';
    )));

    OriginalEl autor Baptiste Pernet

  7. 0

    SOLUCIÓN de CÓDIGO agregar esta clase a su /solicitud/formulario y extender todas las formas de esta clase

      class Application_Form_SpecialSubform extends Zend_Form_SubForm
    {
    protected $_openTag = '<form>';
    protected $_closeTag = '</form>';
    protected $_htmlIniCloseTagChars = '</';
    public function render(\Zend_View_Interface $view = null) {
    if (!$this->isPartOfAForm())
    $this->addDecorator('Form'); 
    return parent::render($view);
    }
    protected function isPartOfAForm(){
    return (!is_null($this->getElementsBelongTo()));
    }
    public function initForm()
    {       
    $defaultZendCloseTag = $this->getDefaultFormViewCloseTag();      
    $completeTag='';
    $this->addDecorator('Form'); 
    $this->getDecorator('Form')->setElement($this);
    $completeTag=$this->getDecorator('Form')->render('');
    $this->set_openTag(str_replace($defaultZendCloseTag, '', $completeTag));
    return $this->get_openTag();
    }
    public function endForm()
    {
    return $this->get_closeTag();
    }
    protected function getDefaultFormViewCloseTag()
    {
    $defaultFormTag = $this->get_closeTag();
    $view = $this->getView();
    $defaultTag = $view->form('',null,true);
    $pos = strrpos ($this->get_htmlIniCloseTagChars(),$defaultFormTag);
    if ($pos !== false) {
    $defaultFormTag =  substr($defaultTag, $pos); 
    }
    $this->set_closeTag($defaultFormTag);
    return $defaultFormTag;
    }
    protected function get_openTag() {
    return $this->_openTag;
    }
    protected function get_closeTag() {
    return $this->_closeTag;
    }
    protected  function get_htmlIniCloseTagChars() {
    return $this->_htmlIniCloseTagChars;
    }
    protected function set_openTag($_openTag) {
    $this->_openTag = $_openTag;
    }
    protected  function set_closeTag($_closeTag) {
    $this->_closeTag = $_closeTag;
    }
    protected function set_htmlIniCloseTagChars($_htmlIniCloseTagChars) {
    $this->_htmlIniCloseTagChars = $_htmlIniCloseTagChars;
    }  
    }

    a su vista, usted debe llamar a initForm() cuando quieres abrir la etiqueta form y endForm() para cerrar, como se puede ver TODAS las ZF comportamiento es virgen por lo que su totalmente compatible.

    MÁS TECH EXPLICACIÓN:

    Para agregar o inyectar código entre nuestros zend formas la mejor y más limpio de manera que el uso de los Subformularios en todas sus formas, los Subformularios son formas así que usted tiene todas las características como la validación, filtro …. y también se puede reutilizar fácil de apilar y como muchos como usted desea dentro de su forma o dentro de cualquier otro subformulario. También se encargan de la resultante publicar sus trivial.

    así que vamos a hacer un ejemplo
    supouse tienes un administrador de la información del usuario como dirección, número de teléfono, etc, digamos que userInfo
    otra parte de su sitio maneja más información privada, como banck cuenta y la religión. y al menos una más restringida área de administración protegida que manejan usuario pasword y el papel.
    usted, por supuesto, tiene sus 3 formas, en diferentes controladores y acciones de su código.
    Y ahora lo que necesita para ponerlo todo junto, pero necesita una gran cantidad de marcas para mostrar en las etiquetas o explicar cualquier área.
    con subformularios su trivial sólo echo $this->->subformName en su punto de vista.
    en este punto se podrá observar que la forma de la etiqueta no aparece y no se puede enviar el post. este es el único problema de esta técnica y se va a resolver con una simple y (déjame decirte) elegantes de la clase de extender y de la sobrecarga de método render.

    OriginalEl autor Plinio

  8. -1

    Poner en tu script de vista…

    <!-- /application/views/scripts/myController/myAction.phtml -->
    <div id="wmd-button-bar" class="wmd-panel"></div>
    <?php echo $this->form ;?>
    Cómo es que dentro de la forma?
    No hay un ‘método’ elemento en HTML, así que interpretan a sus preguntas como querer poner el div por encima del elemento de formulario que contiene el atributo method.
    Lo sentimos, su derecho, me refería a un textarea que me han dado el identificador de Método. El requisito es un montón de entradas y este html para ir dentro de la forma por encima de este elemento.

    OriginalEl autor Thomas

  9. -1

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

    new Zend_Form_Element_Note('forgot_password', array(
    'value' => '<a href="' . $this->getView()->serverUrl($this->getView()->url(array('action' => 'forgot-password'))) . '">Forgot Password?</a>',
    ))
    Esta respuesta ha recibido votos negativos. Zend_Form_Element_Note es un estándar de la clase en Zend (al menos Zend 1.x)

    OriginalEl autor axiom82

Dejar respuesta

Please enter your comment!
Please enter your name here