2011-11-23 63 views
2

我按照自己希望的樣子排列窗體佈局時遇到了一些麻煩。這裏的問題並不是裝飾文件元素本身,麻煩來自功能:$file->setMultiFile(3)。我似乎無法在多個文件輸入元素之間放置分隔符,導致它們放在彼此後面的一排中。Zend_Form文件字段分隔符

這是我創建的文件元素:

$oElement = new Zend_Form_Element_File('file'); 
$oElement->setLabel('File') 
    ->setMultiFile(3) 
    ->setDestination('location on server'); 
$this->addElement($oElement); 

再後來我加了裝飾:

$this->getElement('file')->setDecorators(array(
    'File', 
    'Errors', 
    array(array('td' => 'HtmlTag'), array('tag' => 'td')), 
    array('Label', array('tag' => 'td')), 
    array(array('tr' => 'HtmlTag'), array('tag' => 'tr')) 
)); 

的電流輸出爲:

<tr> 
    <td id="file-label"> 
     <label class="optional" for="file">File</label> 
    </td> 
    <td> 
     <input type="file" id="file-0" name="file[]"> 
     <input type="file" id="file-1" name="file[]"> 
     <input type="file" id="file-2" name="file[]"> 
    </td> 
</tr> 

我要的是在輸入元素之間有一個<br />,因此它們不會放在一行中。這可能通過裝飾者?使用收音機/ mutliselect/multicheckbox有一個setSeparator函數可以做到這一點,但這似乎並不適用於文件元素。

有人能幫我一下嗎? 由於提前,

伊利安

+0

追加jQuery作爲一個快速修復? –

+1

嘗試讀取此:http://stackoverflow.com/questions/2143462/how-do-i-use-viewscripts-on-zend-form-file-elements/2993182#2993182 – JellyBelly

+0

正試圖避免使用視圖,但如果沒有其他事情出現,我想它會做。謝謝。 – Ilians

回答

2

這可能是作弊了一下,但下面應該爲你工作:

$fd = $oElement->getDecorator('File'); 

$fd->setOption('placement', 'PREPEND') 
    ->setOption('separator', '<br />'); 

你的元素添加到窗體後,您可以將這些代碼和改變裝飾器。

Zend_Form_Decorator_File的render()方法在創建標記時使用了分隔符,但是它們讓您無法設置它。展示位置和分隔符的設置被列入黑名單,但使用上述技巧,您可以設置它們。

在Zend_Form_Decorator_File渲染():

$separator = $this->getSeparator(); 
$placement = $this->getPlacement(); 
//... 

// in a loop, create the array of input elements 
$markup[] = $view->formFile($name, $htmlAttribs); 

//... 
// join each file element by separator, which cannot be set with setSeparator() 
$markup = implode($separator, $markup); 

我必須設置安上PREPEND,否則使用append什麼時候<br />*file input*<br />*file input*<br />*file input*

希望有所幫助。

+0

感謝您的回覆。除了一件事情,即最大文件大小,它工作得很好。當使用'$ fileElement-> addValidator('Size',false,102400);'它在域的頂部添加一個隱藏的輸入。通常這不是問題,但是使用分隔符在隱藏字段後面添加'
'也導致文件字段錯誤。有沒有解決的辦法? – Ilians

+0

只看了一下'Zend_Form_Decorator_File'類,發現它在render函數中設置了。不要以爲我可以改變添加隱藏字段的方式。猜猜我必須去看ViewHelper。 – Ilians

+0

如果你像'input [type =「hidden」] {margin:0; padding:0}'這可能有助於修復放置。 – drew010