2010-07-29 78 views
0

我想一個基本的:如何讓Zend Decorator允許默認值?

<input type="text" /> 

而且我想的默認值來清除,當用戶把一個值(kinda like this)。如果默認值返回onBlur,那將是理想的。

不要想要提交默認值,如果他們離開它,然後點擊提交。

我使用Zend生成表單,想象我的解決方案可以完全適合Zend表單裝飾器。

我找不到任何現有的,所以我想問:

你所說的設計師嗎?或者有什麼能幫助我做出一個?

+0

就像@Oloolo說的那樣,用jquery來說明。 而且,爲了防止存儲默認值,請在控制器中檢查它,或者爲此寫一個自定義驗證器。 – 2010-07-29 15:15:16

回答

0

好吧,我已經建立了一個裝飾,讓我實現jquerypluginOlolo公佈。 它檢查以查看是否元件具有標籤集,以及如果這樣做,默認爲:

require_once 'Zend/Form/Decorator/Abstract.php'; 

class Application_Form_Decorator_DefaultEnabledInput extends Zend_Form_Decorator_Abstract 
{ 
    private $attribs = array(); 
    public function render($content) 
    { 
     $element = $this->getElement(); 

     if(get_class($element) != 'Zend_Form_Element_Text') throw new Exception("Application_Form_Decorator_DefaultEnabledInput only works on text fields"); 

     $element->setAttrib('type', 'text'); 
     $element->setAttrib('name', htmlspecialchars($element->getName())); 
     $element->setAttrib('value', htmlspecialchars($element->getValue())); 

     $attribs = ''; 
     $default = $element->getLabel(); 
     if($default) 
     { 
      $element->setAttrib('rel', $default); 
      $element->setAttrib('title', $default); 
      $class = $element->getAttrib('class'); 
      $element->setAttrib('class', "$class hasDefault"); 
      $default = ""; 
     } 
     foreach($element->getAttribs() as $key => $val) $attribs .= "$key='$val' "; 
     return "<input $attribs/>"; 
    } 
} 

它允許我來定義(使用setLabel)形式對象的默認值。

$element = $this->createElement('text', 'suburb'); 
    $element->setDecorators(array('DefaultEnabledInput')); 
    $element->setLabel('enter suburb here'); 
    $this->addElement($element); 

所有我需要做的是確保查詢和插件都包含在頁面上,而這段代碼:

$(document).ready(function() { 
    // default values 
    $('.hasDefault').each(function(){ 
     $(this).defaultValue(); 
    }); 
}); 

然後在模板中,我可以顯示像對象這個:

<?= $this->form->getElement('suburb') ?> 
1

只要使用相應的jQuery插件:defaultvalue

+0

chrome抱怨說這個頁面是惡意軟件... – 2010-08-02 01:36:10

+0

它以後工作得很好 - 肯定是一個糟糕的廣告或一些東西 – 2010-08-03 02:16:15