Zend表单元素的自动完成

时间:2010-09-15 19:19:24

标签: php zend-framework zend-form

使用Zend创建表单元素时(使用Zend Studio for Eclipse),我想要一些自动完成或提示。这就是我在想的。我确信这些存在,但我不知道如何获得它们。

  • 我输入createElement并自动完成为我提供了签名createElement($type, $name)。好的,我选择它。

  • 但是当我尝试设置$type时,我没有得到任何提示,例如DateTextBoxValidationTextBox。作为新人,我看到这是如何有用的。你怎么做才能记住所有的选择?

  • 对于arrayrequireinvalidMessage属性,我想获得一个可供选择的列表,和/或当我自动完成时开始输入一个。

    // Date field

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

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

    );

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

2 个答案:

答案 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)

您无需等待任何插件即可自行提供帮助:

  • 学习并记住;)
  • 使用所有可用选项扩展 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();