turk porno porno escort rokettube
Ergebnis 1 bis 8 von 8

Thema: Expressive Skeleton - 404 Handling funktioniert nicht

  1. #1
    Neuer Benutzer
    Registriert seit
    13.04.2015
    Beiträge
    10
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard Expressive Skeleton - 404 Handling funktioniert nicht

    Hallo,

    ich habe folgendes Problem und finde den Fehler einfach nicht.

    Ich installiere eine neue Expressive Skeleton (modular, Alles Zend Komponenten und Whoops).

    Aufruf der Startseite läuft und er gibt mir korrekt einen 404 Fehler zurück wenn ich eine x-beliebige Route verwende die nicht existiert, z.B. http://localhost/xyz

    Soweit so gut.

    Nun habe ich das ganze kopiert und wollte es für mich anpassen. Habe das Modul von "App" auf "Frontend" umbenannt, ebenso die Template-Verzeichnisse angepasst. Im großen und Ganzen ist alles gleich geblieben, nur eben heißt das jetzt anders. Composer aktualisiert.

    Aufruf der Startseite funktioniert aber, wenn ich einen 404 provozieren will, wirft er mir in diesem Fall eine Ex und gibt eben nicht das Error-Template aus:
    Zend\Expressive\Helper\Exception\RuntimeException
    Attempting to use matched result when none was injected; aborting

    Nun habe ich die beiden Installationen mit WinMerge etc. gegengeprüft - aber ich finde den entscheidenen Unterschied nicht.

    Nun meine Fragen:

    • Übersehe ich was, also ist das Verhalten normal und ich muss das Errorhandling erst noch einbauen - aber warum funktioniert es dann mit der Skeleton?
    • Haben die Template-Verzeichnisse eine bestimmte Namenskonvention? layout + error habe ich gleichgelassen, nur /app in /frontend umgebenannt
    • Kann es was mit der development-Einstellung zu tun haben, so dass ein 404 immer eine Ex wirft und mir diese nur im development-Modus angezeigt wird?
    • Tipps wie ich es debuggen kann?



    Vielen Dank,

    DaBonse

  2. #2
    Super-Moderator Avatar von Kaiuwe
    Registriert seit
    30.12.2006
    Beiträge
    5.543
    Thanks
    4
    Thanked 357 Times in 288 Posts

    Standard

    Zitat Zitat von dabonse Beitrag anzeigen
    Code:
    Attempting to use matched result when none was injected
    Der Aufruf vom URL-Helfer in einem View-Skript schlägt fehlt. Prüf mal die Templates auf die korrekte Route.
    Geändert von Kaiuwe (29.01.2018 um 12:48 Uhr)
    Zum Zend Framework stehen jedem folgende Quellen zum Nachschlagen zur Verfügung:

  3. #3
    Neuer Benutzer
    Registriert seit
    13.04.2015
    Beiträge
    10
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Hi,

    also die Templates liegen, wie von der Skeleton bereitgestellt, nur der Modul-Name hat sich geändert:

    /src/Frontend/templates/
    - error/404.phtml + error.phtml
    - frontend/home.phtml
    - layout/default.phtml

    In der ConfigProvider-Klasse

    Code:
    'paths' => [
        'frontend'      => [FRONTEND_ROOT . '/templates/frontend'],
        'error'         => [FRONTEND_ROOT . '/templates/error'],
        'layout'        => [FRONTEND_ROOT . '/templates/layout'],
    ],

    wobei FRONTEND_ROOT auf src/Frontend zeigt.


    Startseite wird korrekt ausgegeben, er findet also layout.phtml und frontend.phtml.

    Wenn ich in der entsprechenden Zend Klasse, einen Dump und Exit einbaue, dann sieht man auch, dass das Error-Template gefunden wird, weil es ausgegeben wird. Es wird hald eine Ex geworfen die dann wiederum die Verarbeitung abbricht.

    Meiner Meinung nach stimmt was mit dem Errorhandling nicht. Wie gesagt, was ich nicht versteht ist, dass die Anpassungen minimal waren und ich augenscheinlich keinen Unterschied zur original Skeleton finde.


    ViewHelper wurden von mir nicht eingebaut. Finde auch keinen in der Skeleton, den ich angepasst haben könnte.

  4. #4
    Super-Moderator Avatar von Kaiuwe
    Registriert seit
    30.12.2006
    Beiträge
    5.543
    Thanks
    4
    Thanked 357 Times in 288 Posts

    Standard

    Zitat Zitat von dabonse Beitrag anzeigen
    wobei FRONTEND_ROOT auf src/Frontend zeigt.
    Wozu die Konstante?

    Zitat Zitat von dabonse Beitrag anzeigen
    Es wird hald eine Ex geworfen die dann wiederum die Verarbeitung abbricht.
    Du meinst eine Ausnahme a.k.a „Exception“. Oder wirft jemand eine „Ex-Frau“?

    Zitat Zitat von dabonse Beitrag anzeigen
    Meiner Meinung nach stimmt was mit dem Errorhandling nicht.
    Die Fehlerbehandlung stimmt doch, denn Whoops springt an und es zeigt dir die geworfene Ausnahme. Nun musst du nur die Nachricht der Ausnahme entsprechend zuordnen. Diese weist auf den URL-Helper. Siehe: https://github.com/zendframework/zen...Helper.php#L71

    Such mal in deiner Anwendung nach „$this->url(“ und überprüfe alle Stellen auf Richtigkeit.
    Geändert von Kaiuwe (29.01.2018 um 23:30 Uhr)
    Zum Zend Framework stehen jedem folgende Quellen zum Nachschlagen zur Verfügung:

  5. #5
    Neuer Benutzer
    Registriert seit
    13.04.2015
    Beiträge
    10
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Hi kaiuwe,

    das war der Fehler. Vielen Dank.

    Im Default-Template habe ich zu Testzwecken die aktuelle URL mittels $this->URL() ausgegeben und genau deswegen wirft er den Fehler. Im Leben hätte ich den Fehler nicht dort vermutet. Aber im nachhinein nachvollziehbar, da die Route nicht existiert hat er auch keine gültige URL. Dachte er würde die angeforderte Adresse ausgeben. Habe mit dem Fehler nicht gerechnet, weil die Anweisung im Normalfall ja die Seitenadresse ausgibt.

    Das mit der Konstante habe ich aus dem Buch von Ralf Eggert übernommen. Er verwendet dort ebenfalls Konstanten zur Adressierung auf dem Dateisystem. Da ich selbst ein Freund absoluter Verzeichnisadressierung bin, habe ich das einfach so übernommen. Das ist aber noch nicht final.

    Es wurde natürlich eine Ausnahme geworfen, keine Ex-Frau ;-) Obwohl die Wahrscheinlichkeit für eine Ex-Frau mit jedem Tag, wo ich den Fehler nicht gefunden habe, signifikant angestiegen ist ;-)

    Dann mache ich mal weiter. Nochmal vielen Dank,

    DaBonse

  6. #6
    Super-Moderator Avatar von Kaiuwe
    Registriert seit
    30.12.2006
    Beiträge
    5.543
    Thanks
    4
    Thanked 357 Times in 288 Posts

    Standard

    Zitat Zitat von dabonse Beitrag anzeigen
    Im Leben hätte ich den Fehler nicht dort vermutet
    Kurzer Tipp dazu: einfach nach der Meldung von der Ausnahme im Verzeichnis „vendor“ suchen, dann findet man oft die entsprechende Klasse und kann so die Fehlerquelle genauer lokalisieren.

    Zitat Zitat von dabonse Beitrag anzeigen
    Das mit der Konstante habe ich aus dem Buch von Ralf Eggert übernommen.
    Stimmt, dies macht der Ralf seit Version 1 vom ZF und hat es beibehalten.
    Ich selber verzichte komplett auf „globale“ Konstanten. Wenn dann verwende ich Klassenkonstanten. Und Pfade werden bei mir in Konfigurationsdateien oder in einem „ConfigProvider“ direkt verwendet. Alle anderen Pfade kommen aus der Konfiguration selbst und werden als SPL-Objekt an das entsprechende Objekt übergeben.
    Zum Zend Framework stehen jedem folgende Quellen zum Nachschlagen zur Verfügung:

  7. #7
    Neuer Benutzer
    Registriert seit
    13.04.2015
    Beiträge
    10
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Zitat Zitat von Kaiuwe Beitrag anzeigen
    Kurzer Tipp dazu: einfach nach der Meldung von der Ausnahme im Verzeichnis „vendor“ suchen, dann findet man oft die entsprechende Klasse und kann so die Fehlerquelle genauer lokalisieren.
    Hatte die entsprechende Klasse schon in der Hand. Aber eben von komplett falschen Voraussetzungen ausgegangen. Im Nachhinein, sieht man auch sehr schön das das Template und die entsprechende Zeile angegeben war. Aber vor lauter Betriebsblindheit einfach übersehen.

    Zitat Zitat von Kaiuwe Beitrag anzeigen
    Stimmt, dies macht der Ralf seit Version 1 vom ZF und hat es beibehalten.
    Ich selber verzichte komplett auf „globale“ Konstanten. Wenn dann verwende ich Klassenkonstanten. Und Pfade werden bei mir in Konfigurationsdateien oder in einem „ConfigProvider“ direkt verwendet. Alle anderen Pfade kommen aus der Konfiguration selbst und werden als SPL-Objekt an das entsprechende Objekt übergeben.
    Ja Konstanten sind ja immer kritisch zu sehen in Hinblick auf Testbarkeit, da zur Laufzeit nicht mehr änderbar. In diesem speziellen Fall aber wahrscheinlich nicht relevant, da sich beim Testen der Ort des Modules nicht ändern wird.

    Das mit dem SPL-Objekt in diesem Zusammenhang, werde ich mir mal genauer ansehen.

    Magst Du mal ein Beispiel posten, wie das bei Dir abläuft?

  8. #8
    Super-Moderator Avatar von Kaiuwe
    Registriert seit
    30.12.2006
    Beiträge
    5.543
    Thanks
    4
    Thanked 357 Times in 288 Posts

    Standard

    In einer Fabrik einfach:

    PHP-Code:
    public function __invoke(
        \
    Interop\Container\ContainerInterface $container,
        
    $requestedName,
        array 
    $options null
    ) {
       
    // Kommt vom Zend\ModuleManager\Listener\ConfigListener
       /** @var array $config */
       
    $config $container->get('Config');

       
    $filename $config['foobar_file'];
       
    $file     = new \SplFileObject($filename);

       return new 
    MyClass($file);

    In der Klasse selber dann:
    PHP-Code:
    public function test()
    {
        return 
    file_get_contents($this->file->getRealPath());

    Den Dateinamen aus der Konfiguration zu lesen bietet die Freiheit des (einfachen) Austauschs. Zusätzlich halte ich konkrete Dateinamen oder Pfade aus den Klassen raus.

    Durch SplFileObject ist sicher gestellt, dass es sich um eine Datei handelt, diese existiert und geöffnet werden kann. Wird nur ein Dateiname als Zeichenkette übergeben, dann müssen auch noch alle Prüfung zur Datei selbst, innerhalb der Klasse, durchgeführt werden.
    Zum Zend Framework stehen jedem folgende Quellen zum Nachschlagen zur Verfügung:

Ähnliche Themen

  1. Antworten: 2
    Letzter Beitrag: 22.04.2015, 13:44
  2. Antworten: 0
    Letzter Beitrag: 06.05.2013, 18:19
  3. IndexController funktioniert nicht
    Von Spin_1987 im Forum Einsteigerfragen
    Antworten: 1
    Letzter Beitrag: 13.06.2011, 16:06
  4. Zend_Cache_Frontend_Page funktioniert nicht.
    Von CHAOSFISCH im Forum Core
    Antworten: 18
    Letzter Beitrag: 10.07.2009, 17:36
  5. Nach Serverumzug - Objekt nicht gefunden 404
    Von lorrey im Forum Installation & Konfiguration
    Antworten: 3
    Letzter Beitrag: 09.11.2007, 19:24

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •