0

エントリを編集するときに、カスタムフィールドタイプの正しい値が選択されるようにするにはどうすればよいですか?私はこれまでにこれを持っています:

class JFormFieldCustom extends JFormField {

    protected $type = 'Custom';

    // getLabel() left out

    public function getInput() {

            return '<select id="'.$this->id.'" name="'.$this->name.'">'.
                        '<option value="1" >1</option>'.
                        '<option value="2" >2</option>'.
                    '</select>';
    }

}

選択した値をこのクラスに渡して、次のことができるようにするにはどうすればよいですか。

<option value="1"SELECTED>1</option> 

また

<option value="2" SELECTED>2</option>

ありがとう!

4

3 に答える 3

4

JFormFieldListすでに存在するものを使用する方が簡単です。つまり、の代わりに 拡張します。JFormFieldそうすれば、リストのを返すだけで済みoption'sます。継承された機能が残りの作業を行います-一致するオプションの選択を含みます$this->value

<?php
/**
 * Do the Joomla! security check and get the FormHelper to load the class
 */
defined('_JEXEC') or die('Restricted Access');

JFormHelper::loadFieldClass('list');

class JFormFieldMyCustomField extends JFormFieldList
{
    /**
     * Element name
     *
     * @var     string
     */
    public  $type = 'MyCustomField';

    /**
     * getOptions() provides the options for the select
     *
     * @return  array
     */
    protected function getOptions()
    {
        // Create an array for our options
        $options = array();
        // Add our options to the array
        $options[] = array("value" => 1, "text" => "1);
        $options[] = array("value" => 1, "text" => "1);
        return $options;
    }
}
于 2013-03-25T08:39:44.990 に答える
0

選択した値を取得するために使用$this->valueします。これを試してください-

 class JFormFieldCustom extends JFormField {

        protected $type = 'Custom';

        // getLabel() left out

        public function getInput() {

                return '<select id="'.$this->id.'" name="'.$this->name.'">'.
                            '<option value="1" <?php echo ($this->value==1)?'selected':''?>>1</option>'.
                            '<option value="2" <?php echo ($this->value==2)?'selected':''?>>2</option>'.
                        '</select>';
        }
    }

これがお役に立てば幸いです。

于 2013-03-25T07:05:33.943 に答える
0

Joomla http://www.gnu.org/licenses/gpl-2.0.html GNU / GPL * @copyright(c)2017YouTechCompanyを選択してください。全著作権所有。* @author macasin * / defined('_ JEXEC')またはdie;

JFormHelper :: loadFieldClass('list');

class JFormFieldSelect extends JFormFieldList {protected $ type ='select';

protected function getInput()
{
    $html = array();
    $attr = '';

    // Initialize some field attributes.
    $attr .= !empty($this->class) ? ' class=select ' . $this->class . '"' : ' class=select ';
    $attr .= $this->readonly ? ' readonly' : '';
    $attr .= $this->disabled ? ' disabled' : '';
    $attr .= !empty($this->size) ? ' size="' . $this->size . '"' : '';
    $attr .= $this->required ? ' required aria-required="true"' : '';

    // Initialize JavaScript field attributes.
    $attr .= $this->onchange ? ' onchange="' . $this->onchange . '"' : '';

    // Get the field options.
    $options = $this->getOptions();

    // Load the combobox behavior.
    JHtml::_('behavior.combobox');

    $html[] = '<div class="select input-append">';

    // Build the input for the combo box.
    $html[] = '<select name="' . $this->name . '" id="' . $this->id . '" value="'
        . htmlspecialchars($this->value, ENT_COMPAT, 'UTF-8') . '"' . $attr . ' autocomplete="off" >';

    foreach ($options as $option)
    {
        $html[] = '<option '.($option->value == $this->value ? "selected" : "").' value='.$option->value.'>' . $option->text . '</option>';

    }
    $html[] = '</select></div>';

    return implode($html);
}

}

于 2017-01-13T12:49:58.037 に答える