Zend Framework AjaxContext过滤结果,而Decorator不可移除

时间:2010-12-22 22:39:04

标签: php zend-framework zend-form-element

好的,因为这个问题有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>
    
  3. P.S。代码格式化系统正在向我发誓,有人可以帮我解释一下代码的格式吗?

1 个答案:

答案 0 :(得分:1)

装修

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

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

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

查看脚本

你需要通过“跳过标签”来详细说明你的意思。除了标记中的asdfasdfasdfasd不合适的字符串外,我看不出任何问题。

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