Zend Framework AjaxContext фильтрует результаты, а декораторы не удаляются - PullRequest
0 голосов
/ 23 декабря 2010

Хорошо, поскольку эта проблема состоит из 2 частей, их будет проще объяснить вместе.Итак, вот так:

  1. Я пытаюсь удалить декораторы по умолчанию из этих элементов, так как я использую их немного по-другому.Но что бы я ни делал, DtDDWrapper все равно появляется.Если я попытаюсь удалить все декораторы, все приведенные ниже поля исчезнут.

    public function newfieldAction() {
    
    
    $ajaxContext = $this->_helper->getHelper('AjaxContext');
    $ajaxContext->addActionContext('newfield', 'html')->initContext();
    
    
    $id = $this->_getParam('id', null);
    $id1=$id+1;
    $id2=$id+2;
    
    
    $element = new Zend_Form_Element_Text("newTitle$id1");
    $element->setOptions(array('escape'=>false));
    $element->setRequired(true)->setLabel('Vertība')->removeDecorator('label');
    $tinyelement=new Zend_Form_Element_Text("newName$id");
    $tinyelement->setRequired(true)->setOptions(array('escape'=>false))->setLabel('Vertība')->removeDecorator('label');
    $textarea_element = new Zend_Form_Element_Textarea("newText$id2");
    $textarea_element->setRequired(true)->setOptions(array('escape'=>false))->setLabel('Vertība')->removeDecorator('label');
    
    
    $this->view->descriptionField = "<td>".$textarea_element->__toString()."</td>";
    $this->view->titleField = $element->__toString();
    $this->view->field = $tinyelement->__toString();
    $this->view->id=$id;
    }
    
  2. Скрипт контекстного представления соединяется, чтобы обрезать мой код тем или иным способом.Когда я пытаюсь вставить тег <td> или <table> в скрипт вида, он просто пропускает теги.Есть ли способ, чтобы это избежать?Мой сценарий просмотра:

    <tr class="element<php echo $this->id; ?>">
    asdfasdfasdfasd
    <td><?php echo $this->field ?></td>
    <td><php echo $this->titleField ?></td>
    <td><php echo $this->descriptionField ?></td>
    
    
    <td><a class="remove-element" rel="<php echo $this->id ?>">remove</a></td>
    
    
    </tr>
    

PS система форматирования кода вызывает у меня сомнения, может кто-нибудь помочь мне с форматированием кода?

1 Ответ

1 голос
/ 23 декабря 2010

Декораторы

Как минимум, вам необходимо установить декоратор ViewHelper. Это тот, который отображает сам элемент.

Чтобы отключить декораторы по умолчанию, самый простой способ сделать это - через конструктор элемента, либо установив декораторы с помощью опции decorators, либо установив для опции disableLoadDefaultDecorators значение false (но вам все равно придется устанавливать декораторы позже ). Например

$element = new Zend_Form_Element_Text("newTitle$id1", array(
    'decorators' => array('ViewHelper')
));

Просмотр сценария

Вам нужно будет уточнить, что вы подразумеваете под "пропуском тегов". Кроме этой asdfasdfasdfasd неуместной строки в вашей разметке, я не вижу никаких проблем.

Это может также зависеть от того, где в DOM вы загружаете / размещаете контекст AJAX. При загрузке в неправильном месте создание недопустимой разметки может привести к некорректному отображению.

...