Боковая панель отсутствует после добавления пользовательского декоратора к элементу формы - PullRequest
1 голос
/ 30 июля 2010

боковая панель находится в файле layout.phtml. я очень смущен, почему добавление 1 декоратора в мою форму, потому что моя боковая панель ... хм на самом деле все после этого section#main - я использую HTML5 - пропадает

layout.phtml

... /* scripts and all */ ...
<body>
    <header> ... </header>
    <nav> ... </nav>
    <div class="clear" />

    <section id="main">
        <?php echo $this->navigation()->breadcrumbs(); ?>
        <?php echo $this->layout()->content; ?>
    </section>

    <aside id="sidebar"> ... </aside>
    <footer> ... </footer>
</body>

все после section#main отсутствует.

Мой пользовательский декоратор просто

class Application_Form_Decorator_WmdPreview extends Zend_Form_Decorator_Abstract {
    function render($content) {
        $separator = $this->getSeparator();
        $html = '<label style="margin-top: 10px">Preview</label><div class="wmd-preview" />';

        switch ($this->_placement) {
            case self::APPEND:
                return $content . $separator . $html;
            case self::PREPEND:
                return $html . $separator . $content;
        }
    }
}

и моя форма init() -

... // adding form elements 

// call loading of default decorators manually
$this->loadDefaultDecorators();
// override decorator for body
$this->getElement('body')
     ->setDecorators(array(
        'ViewHelper',
        'Errors',
        array('Description', array('tag' => 'p', 'escape' => false)),
        'Label',
        new Application_Form_Decorator_WmdPreview,
        array('HtmlTag', array('tag' => 'p'))
     ));
// disable autoloading of default decorators 
$this->setDisableLoadDefaultDecorators(true);

... хм ... что-то, что я сейчас замечаю, это то, что HTML из источника просмотра в порядке

<p><label for="body" class="optional">Post body</label>
<textarea name="body" id="body" rows="24" cols="80"></textarea>
<label style="margin-top: 10px">Preview</label><div class="wmd-preview" /></p>

но вывод из firebug не ...

...
<textarea name="body" id="body" rows="24" cols="80"></textarea>
<label style="margin-top: 10px">Preview</label>
</p> <!-- why is this here !!! -->
<div class="wmd-preview">...</div><!-- and this out of the p!!! -->
</form>
</section>
<!-- all my content supposed to be here is missing! -->
</body>

проблема с JavaScript? от ОМУ ?

Решение

вместо <div /> используйте <div></div>. также, как говорит @DavidW, у меня не должно быть <div> внутри <p>

1 Ответ

2 голосов
/ 30 июля 2010

Я считаю, что тег <p> может содержать только содержание фразы .В частности, <div> внутри <p> делает HTML недействительным.Firefox / Firebug может делать все возможное, но в конечном итоге задыхается от этого.Возможно, использование <span> вместо div решит проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...