2010-09-15 91 views
0

當使用Zend創建表單元素(使用Zend Studio for Eclipse)時,我想要一些自動完成或提示。這就是我的想法。我確信這些都存在,但我不知道如何得到它們。Zend表單元素的自動完成

  • I型createElement,並自動完成讓我簽名createElement($type, $name)。太好了,我選擇它。

  • 但是,當我嘗試設置$type我沒有得到任何暗示,如DateTextBoxValidationTextBox。作爲新人,我看到這可能是有用的。你做什麼來記住所有的選擇?

  • requireinvalidMessage屬性的array,我想獲得的人的名單以供選擇,和/或自動完成,當我開始打字之一。

    // Date field

    $date = $this->createElement('DateTextBox', 'date',

    array('require' => 'true', 'invalidMessage' => 'Invalid date format')

    );

    $date->setLabel('date')->setRequired(true);

回答

1

你有幾個選項來幫助自己,而無需等待任何插件:

  • 學習並記住;)
  • 所有可用的選項擴展您的PHPDoc的塊:

示例(說實話,我不知道Eclipse是否支持phpDoc中的html,甚至不知道@param中的變量名稱後面的文本,但它在Netbeans中正常工作):

/** 
* [...] 
* @param string $type Can be: <ul><li>DateTextBox</li><li>ValidationTextBox</li></ul> 
* @param string $name Whatever 
* @param array|Zend_Config $options Array with following keys: <ul><li>require</li><li>invalidMessage</li></ul> 
* @return Zend_Form_Element 
*/ 
public function createElement($type, $name, $options = null) 
  • 擴展的Zend類,並創建自己的方法來簡化您的工作

例子:

class My_Zend_Form_Element extends Zend_Form_Element  
{ 
    public function createDateTextBox($name, $options = null) 
    { 
     return $this->createElement('DateTextBox', $name, $options); 
    } 
} 
  • 聲明一些很好命名的常量和PHPDoc的
  • 提供一些線索

例子:(類型ZFE_OPTIONS和IDE應該表現出一絲的一些常量數組鍵使用)

/** 
* Can be true or false 
*/ 
define('ZFE_OPTIONS_REQUIRE','require'); 
  • 與方法,建立了自己的助手類出示有效陣列選項

例子:

class ZFE_Options 
{ 
    protected $opts = array(); 

    /** 
    * @param bool $req 
    * @return ZFE_Options 
    */ 
    public function setRequired($req){ 
     $this->opts['require'] = (bool)$req; 
     return $this; 
    } 

    /** 
    * @param string $txt 
    * @return ZFE_Options 
    */ 
    public function setInvalidMessage($txt){ 
     $this->opts['invalidMessage'] = (string)$txt; 
     return $this; 
    } 

    /** 
    * @return array 
    */ 
    public function toArray(){ 
     return $this->opts; 
    } 
} 

$zfe_options = new ZFE_Options(); 
$opts = $zfe_options 
      ->setRequired(true) 
      ->setInvalidMessage('Please provide valid email address') 
      ->toArray(); 
+0

覆蓋ZF的DocBlocks毫無意義,因爲每次更新庫時都會丟失更改。剩下的感覺對我來說很臃腫,尤其是常數方法。 – Gordon 2010-09-15 21:05:36

+1

當更新庫時,這可能會導致函數參數發生變化,所以在新版本中小心是很自然的;)。我也不喜歡常量,但它們有兩個主要優點:可以隨處使用,並且可以自動完成。 http://www.php.net/manual/en/function.curl-setopt.php激勵我使用它們 – 2010-09-15 21:43:18

1

那是不可能的。這不是自動完成的工作原理。你得到的提示直接來自ZF的代碼文檔。沒有更多,沒有更多。您看到的所有提示都直接來自DocBlock和方法簽名,例如

/** 
    * Create an element 
    * 
    * Acts as a factory for creating elements. Elements created with this 
    * method will not be attached to the form, but will contain element 
    * settings as specified in the form object (including plugin loader 
    * prefix paths, default decorators, etc.). 
    * 
    * @param string $type 
    * @param string $name 
    * @param array|Zend_Config $options 
    * @return Zend_Form_Element 
    */ 
    public function createElement($type, $name, $options = null) 

Eclipse可以告訴你插入一個字符串或數組,它會知道該方法返回一個Zend_Form_Element,但它無法告訴你這些字符串應該是什麼。

我知道你所描述的東西存在的唯一地方就是CSS文件。出於某種原因,當我輸入display:時,它會爲我提供一個自動填充框,其中包含此聲明的可能值。如果您想要更復雜的自動完成功能,請考慮將其作爲Zend的功能請求。

+0

@jblue我不知道這將是多麼困難。 – Gordon 2010-09-15 20:02:06

+0

@jblue你必須登錄Zend.com。如果您的支持訂閱仍然有效,您可以打開一張票。否則,你只需在他們的論壇上詢問。 – Gordon 2010-09-15 20:27:15