it-swarm.com.de

Tutorial zur Dokumentation: Warum zeigt meine JFormFieldList ein Textfeld an?

Ich habe diesen Teil des Tutorials durchgearbeitet:
https://docs.joomla.org/J3.x:Developing_an_MVC_Component/Using_the_database
Außer ich habe versucht, meine eigenen Namen anstelle von 'helloworld' zu verwenden.


In den Optionen des Backends "Menüelement", in denen es eine Liste geben soll, wird nur ein leeres Textfeld angezeigt.

enter image description here


Die Codes, die ich verwendet habe, sind:

site/views/uploadwizard/tmpl/default.xml:

<metadata>
    <layout title="COM_OMITTED_UPLOADWIZARD_VIEW_DEFAULT_TITLE">
        <message>COM_OMITTED_UPLOADWIZARD_VIEW_DEFAULT_DESC</message>
    </layout>

    <fields
        name="request"
        addfieldpath="/administrator/components/com_omitted/models/fields"
        >
        <fieldset name="request">
            <field
                name="id"
                type="ulwiz_wmode"
                label="COM_OMITTED_UPLOADWIZARD_FIELD_WMODE_LABEL"
                description="COM_OMITTED_UPLOADWIZARD_FIELD_WMODE_DESC"
                />
        </fieldset>
    </fields>
</metadata>

admin/models/fields/ulwiz_wmode.php:

<?php
defined('_JEXEC') or die('Restricted access');

JFormHelper::loadFieldClass('list');

class JFormFieldUlWiz_WMode extends JFormFieldList
{
    protected function getOptions()
    {
        $db    = JFactory::getDBO();
        $query = $db->getQuery(true);
        $query->select('id,wmode');
        $query->from('#__omitted_ulwiz_wmode');
        $db->setQuery((string) $query);
        $messages = $db->loadObjectList();
        $options  = array();

        if ($messages)
        {
            foreach ($messages as $message)
            {
                $options[] = JHtml::_('select.option', $message->id, $message->wmode);
            }
        }

        $options = array_merge(parent::getOptions(), $options);

        return $options;
    }
}

Und die Datenbankbeschreibung:

DROP TABLE IF EXISTS `#__omitted_ulwiz_wmode`;

CREATE TABLE `#__omitted_ulwiz_wmode` (
    `id`        INT(11)     NOT NULL AUTO_INCREMENT,
    `wmode`     VARCHAR(25) NOT NULL,
    `published` tinyint(4)  NOT NULL DEFAULT '1',
    PRIMARY KEY (`id`)
)

    ENGINE =MyISAM
    AUTO_INCREMENT =0
    DEFAULT CHARSET =utf8;

INSERT INTO `#__omitted_ulwiz_wmode` (`wmode`) VALUES
('Option1Text'),
('Option2Text');

Wie behebe ich das? Ich bin schon seit Stunden dabei und kann daher nicht zum nächsten Teil des Tutorials übergehen.

2
RiA

Das Problem ist, dass es nicht in der Lage ist, das Feld zu bekommen. Ich sehe den Dateinamen, den Sie als ulwiz_wmode.php Definiert haben, und im Klassennamen verwenden Sie diesen JFormFieldUlWiz_WMode. Stellen Sie sicher, dass die Namenskonvention sehr korrekt ist und mit dem Klassennamen und dem Dateinamen übereinstimmt. Es sollte JFormFieldUlwiz_wmode Sein.

<?php
defined('_JEXEC') or die('Restricted access');

JFormHelper::loadFieldClass('list');

class JFormFieldUlwiz_wmode extends JFormFieldList
{
   protected $type = 'ulwiz_wmode'; //also add this line

   protected function getOptions()
    {
        //your code
    }
}

Sie erstellen ein eigenes benutzerdefiniertes Feld. Weitere Informationen zu benutzerdefinierten Feldern finden Sie in dieser Dokumentation:

https://docs.joomla.org/Creating_a_custom_form_field_type

3
Liz.