generateFronendUrl auf method_exists prüfen #3899

Closed
kgansberger opened this Issue Feb 6, 2012 · 7 comments

Projects

None yet

4 participants

@kgansberger

if (method_exists($this, $callback[0])) {
$strUrl = $this->$callback[0]->$callback[1]($arrRow, $strParams, $strUrl);
}
behebt Fehlermeldungen mit Erweiterungen wie direkt_link und folderurl.

@leofeyer
Member
leofeyer commented Feb 8, 2012

Was für Probleme machen diese Erweiterungen denn?

@kgansberger

Fatal error: Call to a member function generateDomainLink() on a non-object in /var/www/vhosts/schorm.at/httpdocs/system/libraries/Controller.php on line 2438
Domainlink in Verbindung mit dem ArticleFilter . Url: (seite.html?af_filter[2][]=29). Im Forum sind ebenfalls Einträge zu diesem Fehler, daher auch das Ticket.

@leofeyer
Member
leofeyer commented Feb 8, 2012

Sind die genannten Extensions denn für die Contao-Version freigegeben?

@minsterpinball

folderurl: http://www.contao.org/de/extension-list/view/folderurl.10040029.de.html
2.6.0-2.9.5

Die Erweiterung direkt_link konnte ich nicht finden.

Auch wenn die Erweiterungen nicht für 2.11 freigegeben sind, macht es natürlich Sinn zu prüfen, ob eine Methode existiert, bevor diese aufgerufen wird.

@leofeyer
Member

Nicht unbedingt, denn wenn eine Erweiterung einen Hook registriert, gehe ich mal davon aus, dass es diese Funktion auch gibt. In diesem Fall wende Dich bitte an den Hersteller der Erweiterung und bitte ihn, eine 2.10/2.11-kompatible Version zu erstellen.

@leofeyer leofeyer closed this Feb 10, 2012
@kgansberger

sorry. Domainlink von Tristan, nicht directlink... http://www.contao.org/de/extension-list/view/DomainLink.10030049.de.html
ist > 2.10

@tristanlins
Contributor

Afaik definiert der ArtikelFilter eine __set und __get Methode, berücksichtigt allerdings nur seine eigenen Variablen und hat keinen Fallback für alle anderen Variablen.

<?php
public function __set($k, $v)
{
    switch ($k)
    {
        case 'a':
            ...
            break;
        case 'b':
            ...
            break;
    }
}

Hier fehlt einfach was, nämlich ein default Fallback:

<?php
public function __set($k, $v)
{
    switch ($k)
    {
        ...
        default:
            // Abhängig davon, wovon man erbt entweder
            parent::__set($k, $v);
            // oder
            $this->$k = $v;
    }
}

gleiches gilt für die __get Methode.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment