Je parcourais cette partie du tutoriel:
https://docs.joomla.org/J3.x:Developing_an_MVC_Component/Using_the_database
Sauf que j'ai essayé d'utiliser mes propres noms au lieu de "helloworld".
Dans les options du menu, où il est supposé être une liste, elle affiche simplement une zone de texte vide.
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;
}
}
Et la description de la base de données:
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');
Comment puis-je réparer ça? J'y travaille depuis des heures et je ne peux donc pas passer à la partie suivante du didacticiel.
Le problème est qu'il n'est pas en mesure d'obtenir le terrain. Je vois le nom de fichier que vous avez défini comme ulwiz_wmode.php
et dans le nom de la classe que vous utilisez ce JFormFieldUlWiz_WMode
. Assurez-vous que la convention de dénomination est très appropriée et doit être identique à nom de classe et nom de fichier. CA devrait etre JFormFieldUlwiz_wmode
.
<?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
}
}
Vous créez votre propre champ personnalisé. Pour plus de détails sur les champs personnalisés, consultez cette documentation: