0

好的,由于这个问题有 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代码格式化系统在向我吐槽,有人可以帮我格式化代码吗?

4

1 回答 1

1

装饰器

至少,您需要设置ViewHelper装饰器。这是呈现元素本身的元素。

要禁用默认装饰器,最简单的方法是通过元素构造函数,通过decorators选项设置装饰器或将disableLoadDefaultDecorators选项设置为 false(但您稍后仍需要设置装饰器)。例如

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

查看脚本

您需要详细说明“跳过标签”的含义。除了asdfasdfasdfasd标记中不合适的字符串之外,我看不到任何问题。

这也可能受到您在 DOM 中加载/放置 AJAX 上下文的位置的影响。将其加载到错误的位置,创建无效标记可能会使其看起来无法正确显示。

于 2010-12-22T23:05:08.050 回答