Aujourd'hui, j'ai créé mon premier composant Joomla après leur tutoriel . Tout dans mon composant fonctionnait comme prévu jusqu'à ce que je décide d'ajouter une deuxième vue à mon composant. J'ai ajouté un nouveau dossier dans le répertoire /views/
De mon composant et ajouté tous les fichiers nécessaires: view.html.php, index.html, tmpl/default.xml, tmpl/default.php, tmpl/index.html
.
Voici mon view.html.php
class VacanciesViewSingle extends JViewLegacy
{
var $vacancy = null;
function display($tpl = null)
{
$this->vacancy = $this->get('Vacancy');
// // Check for errors.
if (count($errors = $this->get('Errors')))
{
JLog::add(implode('<br />', $errors), JLog::WARNING, 'jerror');
return false;
}
parent::display($tpl);
}
}
Tant que j'ai compris le fonctionnement des composants dans Joomla, ceci devrait appeler la méthode getVacancy()
de ma classe de modèle.
Dans ma classe de modèles, je n'ai que 2 fonctions: getVacancies()
qui fonctionne parfaitement avec mon autre vue et getVacancy()
qui, à des fins de débogage, ne renvoie qu'un nombre:
public function getVacancy()
{
return "10";
}
Je m'attends donc à ce que ma vue produise "10". Voici mon fichier `tmpl/default.php ':
defined('_JEXEC') or die('Restricted access');
?>
<?php echo $this->vacancy;?>
PS Ouvrir /index.php?option=com_vacancies&view=single
Ne renvoie aucune erreur, juste ma page avec un espace vide où la sortie du composant devrait être ... PS2. Si je modifie $this->vacancy = $this->get('Vacancy');
en $this->vacancy = "10"
Dans ma classe de vue, le résultat attendu est "10". Je suppose donc que getVacancy()
n'est pas appelé pour une raison quelconque.
Il semble que vous n'ayez qu'un seul modèle, plutôt que le modèle attendu par modèle.
En tant que tel, il recherche la fonction dans un modèle lié à votre vue singles, qui n'existe pas.
Essayez de passer un deuxième paramètre à la fonction get pour confirmer le nom du modèle que vous voulez utiliser, c'est-à-dire
$this->vacancy =$this->get('vacancy','vacancies');
(en remplacement de "postes vacants" si vous avez appelé votre modèle autrement)
De plus amples détails sur le fonctionnement de la fonction get sont ici .