2015-04-21 5 views
9

CakePHP 3.0CakePHP 3: Fehlende Streckenfehler für Route, die

existiert Ich erhalte eine "Missing-Route" Fehler für eine Route, die es gibt.

Hier sind meine Routen:

#my admin routes... 
Router::prefix('admin', function($routes) { 
    $routes->connect('/', ['controller'=>'Screens', 'action'=>'index']); 
    $routes->connect('/screens', ['controller'=>'Screens', 'action'=>'index']); 
    $routes->connect('/screens/index', ['controller'=>'Screens', 'action'=>'index']); 
    //$routes->fallbacks('InflectedRoute'); 
}); 

Router::scope('/', function ($routes) { 

    $routes->connect('/login', ['controller' => 'Pages', 'action' => 'display', 'login']);  
    $routes->connect('/pages/*', ['controller' => 'Pages', 'action' => 'display']); 

    $routes->fallbacks('InflectedRoute'); 
}); 

Plugin::routes(); 

Im Grunde habe ich nur den oberen Abschnitt (für den Admin-Routing) auf die Standardrouten, die aus der Box kommen.

Wenn ich besuchen /admin/screens/index Ich sehe den folgenden Fehler:

enter image description here

Beachten Sie die Fehlermeldung sagt:

Error: A route matching "array ('action' => 'add', 'prefix' => 'admin', 'plugin' => NULL, 'controller' => 'Screens', '_ext' => NULL, )" could not be found.

... was seltsam ist, weil ich nicht versucht, die für den Zugriff auf add Aktion. Die unten aufgeführten Parameter sehen korrekt aus.

Was ist los?

+0

Urgh Kuchen. Mit 2.0 hatte ich Probleme mit zwischengespeicherten Modellen. Ich fand, dass das Debugging auf 2 umgestellt werden würde. Ich gehe davon aus, Sie haben Cache usw. gelöscht –

+0

Die Debug-Konfigurationen scheinen sich ein wenig geändert haben. Es ist jetzt ein boolescher Wert, den ich auf 'TRUE' gesetzt habe. Nur um sicher zu sein, löschte ich auch alle Cache-Dateien in tmp/und tut es immer noch. – emersonthis

+0

Das würde mein Go-to erschöpfen. Sieht aus, als hätte ndm mehr nützliche Einsichten. –

Antwort

11

Schauen Sie sich den StackTrace genauer an, der Fehler tritt beim Versandvorgang nicht auf. Sie scheinen zu denken, dass er in Ihrer Ansichtsvorlage ausgelöst wird, wo Sie wahrscheinlich einen Link zur add erstellen möchten action und reverse-routing können keine passende Route finden, daher der Fehler.

Die Lösung sollte die notwendigen Routen offensichtlich, schließen sein, es ausdrücklich diejenigen wie

$routes->connect('/screens/add', ['controller' => 'Screens', 'action' => 'add']); 

catch-all diejenigen

$routes->connect('/screens/:action', ['controller' => 'Screens']); 

oder einfach die Ausweich diejenigen zu sein, die alles fangen

$routes->fallbacks('InflectedRoute'); 
+1

Du hast es wieder geschafft !! – emersonthis

0

Diese Arbeit für mich im Falle der Verwendung Präfix admin: -

Router::prefix('admin', function ($routes) { 
    // Because you are in the admin scope, 
    // you do not need to include the /admin prefix 
    // or the admin route element. 
    $routes->connect('/', ['controller' => 'Users', 'action' => 'index']); 
    $routes->extensions(['json', 'xml']); 
    // All routes here will be prefixed with `/admin` 
    $routes->connect('/admin', ['controller' => 'Order', 'action' => 'index']); 
    // And have the prefix => admin route element added. 
    $routes->fallbacks(DashedRoute::class); 
});