2009-03-13 4 views
1

Ich habe einen website gesetzt. Wenn ich versuche, und klicken Sie auf einen Link wie register ich die folgende Fehlermeldung erhalten:link_to() generiert Route erfolgreich, aber ein Klick auf diesen Link führt zu einem 404

404 | Not Found | sfError404Exception 
Empty module and/or action after parsing the URL 
    "/trevelyan.alumni/register" (/). 

Die Links werden erzeugt

<?php 
    print link_to('Register', 'register/index'); 
?> 

mit Und ich habe ein 'Register' Modul in apps/Frontend/modules /registrieren.

Ich bin ziemlich neu zu Symfony, jede Hilfe wird geschätzt!


routing.yml:

# default rules 
homepage: 
    url: /
    param: { module: home, action: index } 

default_index: 
    url: /:module 
    param: { action: index } 

default: 
    url: /trevelyan.alumni/:module/:action/* 
+0

Können Sie uns zeigen, was Sie in Ihrem routing.yml haben ? –

+0

# Standardregeln Homepage: url:/ param: {Modul: zu Hause, Aktion: index} default_index: url: /: Modul param: {Aktion: index} default: url:/trevelyan .alumni /: module /: action/* –

+0

Haben Sie eine Methode in der Klasse in apps/frontend/modules/register/actions/actions.class.php namens executeIndex? –

Antwort

1

Ich denke, dass Ihr Problem ist, dass Sie symfony aus einem "Subsite" anstatt direkt aus dem "root" url laufen (http://www.dur.ac.uk/trevelyan.alumni anstelle von http://www.dur.ac.uk/). Ich denke, die einfachste Lösung wäre, trevelyan.alumni an die Vorderseite all Ihrer URLs in routing.yml hinzuzufügen.

Zum Beispiel für die default Route statt

default: 
    url: /:module/:action/* 

Verwendung

default: 
    url: /trevelyan.alumni/:module/:action/* 
+0

Das Problem scheint zu sein, dass ich einen 'virtualdocuments'-Handler benutze (kein .htaccess erlaubt), also alle Anfragen, die nicht zu einer Datei sind, die existiert (z. B./register /), werden an virtualdocuments/index.php gesendet. Ich habe dies nur /index.php gemacht, aber es scheint immer noch nicht zu funktionieren - der gleiche Fehler wie oben. –

+0

# Standardregeln Homepage: URL:/Parameter: {Modul: Home, Aktion: Index} Standardindex: URL: /: Modulparam: {Aktion: Index} Standard: URL: /trevelyan.alumni/:module/:action/* –

+0

so warten - virtualdocuments/index.php benötigt symfony index.php? Vielleicht analysiert Symfony die Route nicht korrekt, weil es nicht das ist, was Sie tatsächlich im Browser sehen. Es könnte nützlich sein, herauszufinden, welche Route Symfony gerade bekommt. –

1

lesen Steven Oxley, aber versuchen, dies auch:

Prüfen Sie mindestens eine Aktion Klasse in Ihrem Modul dir mit dem richtigen Namen (symfony ist Groß-und Kleinschreibung, und das ist sehr schwierig).

Wenn Sie dies tun, überprüfen Sie, ob die Standardaktion (in den Modulkonfigurationsdateien) eine der Aktionsklassen in Ihrem Modul ist.

Vergessen Sie nicht, den Cache jedes Mal zu löschen, wenn Sie eine Konfigurationsdatei ändern.

0

Nur eine kurze Notiz, für die Routing-Änderung (en) zu übernehmen, müssen Sie symfony klar Cache laufen:

./symfony clear-cache 
1

ich diese Dateien, indem Sie die symfony-Controller zu beheben verwaltet die $ _SERVER zu verwenden Variablen, aus denen ein Modul ausgewählt werden kann, falls eines nicht gefunden wurde.

+0

froh, dass Sie das Problem lösen konnten. –

0

sollten Sie einen Punkt aus dem passenden URL für Route entfernen, da der Standard-Routing-Regeln

auf Ihre Standardroute ändern:

default: 
    url: /trevelyan_alumni/:module/:action/* 

und das sollte funktionieren. Beachten Sie, dass der Punkt (.) durch _

ersetzt wird
0

Ich hatte von Symfony 1.2 auf 1.4 aktualisiert und hatte dieses Problem. Am Ende des Tages haben sich die Konfigurationsdateien so verändert, dass das Routing irgendwie kaputt gegangen ist. Wenn Sie die App-Konfigurationsdateien durchgehen und sie mit den "neuen App" -Templates vergleichen/vergleichen, die Sie in lib/vendor/symfony/lib/config/config finden (oder wo auch immer Sie symfony halten), wurde dieses Problem behoben.

1

am Ende Ihrer routing.yml Datei:

homepage: 
    url: 
    param: { module: main, action: index } 

default: 
    url: /:module/:action/* 

und nicht vergessen, den Cache anschließend zu löschen;)

Verwandte Themen