使用Zend创建表单元素时(使用Zend Studio for Eclipse),我想要一些自动完成或提示。这就是我在想的。我确信这些存在,但我不知道如何获得它们。
我输入createElement
并自动完成为我提供了签名createElement($type, $name)
。好的,我选择它。
但是当我尝试设置$type
时,我没有得到任何提示,例如DateTextBox
或ValidationTextBox
。作为新人,我看到这是如何有用的。你怎么做才能记住所有的选择?
对于array
,require
等invalidMessage
属性,我想获得一个可供选择的列表,和/或当我自动完成时开始输入一个。
// Date field
$date = $this->createElement('DateTextBox', 'date',
array('require' => 'true', 'invalidMessage' => 'Invalid date format')
);
$date->setLabel('date')->setRequired(true);
答案 0 :(得分: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。
答案 1 :(得分:1)
您无需等待任何插件即可自行提供帮助:
示例(老实说我不知道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)
示例:
class My_Zend_Form_Element extends Zend_Form_Element
{
public function createDateTextBox($name, $options = null)
{
return $this->createElement('DateTextBox', $name, $options);
}
}
示例:(键入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();