it-swarm.com.de

Problem mit der Komponentensicht. Modellmethode nicht aufgerufen

Heute habe ich meine erste Joomla-Komponente nach ihrem Tutorial erstellt. Alles in meiner Komponente funktionierte wie vorgesehen, bis ich beschloss, meiner Komponente eine zweite Ansicht hinzuzufügen. Ich habe einen neuen Ordner im Verzeichnis /views/ Meiner Komponente hinzugefügt und alle erforderlichen Dateien hinzugefügt: view.html.php, index.html, tmpl/default.xml, tmpl/default.php, tmpl/index.html.

Hier ist meine 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);
    }
}

Solange ich verstanden habe, wie Komponenten in Joomla funktionieren, sollte dies die getVacancy() -Methode aus meiner Modellklasse aufrufen.

In meiner Modellklasse habe ich nur 2 Funktionen: getVacancies(), die perfekt mit meiner anderen Ansicht zusammenarbeiten, und getVacancy(), die zu Debugging-Zwecken nur eine Zahl zurückgeben:

public function getVacancy()
{
    return "10";
}

Daher erwarte ich, dass meine Ansicht "10" ausgibt. Dies ist meine `tmpl/default.php'-Datei:

defined('_JEXEC') or die('Restricted access');
?>
<?php echo $this->vacancy;?>

PS. Das Öffnen von /index.php?option=com_vacancies&view=single Gibt keine Fehler zurück, nur meine Seite mit Leerzeichen, auf der die Komponentenausgabe erfolgen soll ... PS2. Wenn ich $this->vacancy = $this->get('Vacancy'); in meiner Ansichtsklasse in $this->vacancy = "10" Ändere, erhalte ich die erwartete Ausgabe von '10', also nehme ich an, dass getVacancy() aus irgendeinem Grund nicht aufgerufen wird.

1
VTodorov

Es hört sich so an, als hätten Sie nur ein Modell und nicht das erwartete Modell pro Ansicht.

Als solches sucht es nach der Funktion in einem Modell, das sich auf Ihre Einzelansicht bezieht und nicht existiert.

Übergeben Sie einen zweiten Parameter an die Funktion get, um den Namen des zu verwendenden Modells zu bestätigen, d. H

$this->vacancy =$this->get('vacancy','vacancies');

(Ersetzen von "Stellenangeboten", wenn Sie Ihrem Modell einen anderen Namen gegeben haben)

Weitere Details zur Funktionsweise der get-Funktion sind hier .

3
Richard B