Автозаполнение для элементов формы Zend - PullRequest
0 голосов
/ 15 сентября 2010

При создании элементов формы с помощью 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);

Ответы [ 2 ]

1 голос
/ 16 сентября 2010

У вас есть несколько вариантов, чтобы помочь себе, не дожидаясь какого-либо плагина:

  • изучите его и запомните;)
  • расширяйте свои блоки phpDoc всемидоступные опции:

Пример (если честно, я не знаю, поддерживает ли Eclipse html в phpDoc или какой-либо текст после имени переменной в @ 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();
1 голос
/ 15 сентября 2010

Это невозможно. Это не то, как работает автозаполнение. Подсказки, которые вы получаете, взяты непосредственно из документации 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.

...