Seite 1 von 1

Action-Link bei URLRewriting

Verfasst: 20.05.2011, 12:49:12
von APFelsahne
Hi!

Hab grad folgendes Problem.

Auf der Seite domain.tld/kontakt gibt es ein Kontaktforumlar, welches beim absenden an die URL domain.tld/kontakt/~/biz-action:contact weiter gehen soll.
Kurze Info vorweg, das URLRewriting habe ich gerade erst für diese Seite aktiviert, vorher ohne das URLRewriting hat alles funktioniert. Jetzt funktioniert auch bisher alles bis auf den Aufruf der Action.
Hier liegt auch mein Problem, dass sich die Action einfach nicht aufrufen lassen will. Verwendet wird als Inputfilter der FrontcontrollerRewriteRequestFilter und als Outputfilter der HtmlLinkRewriteFilter. Das APF wird in Version 1.13 verwendet.
Die Action wird von der Klasse AbstractFrontcontrollerAction abgeleitet.

Die Ausgabe von var_dump($_REQUEST); ergibt lediglich bei der URL domain.tld/kontakt/~/biz-action:contact

Code: Alles auswählen

array(8) {
  ...
  ["page"]=>
  string(4) "kontakt"
}
Habe ich irgendetwas nicht beachtet? Oder ist der Aufruf falsch?

Für Hilfe wäre ich dankbar :)

Edit:
Die RewriteRule sieht wie folgt aus:

Code: Alles auswählen

RewriteRule !(\.php|\.css|\.js|\.jpe?g|\.png|\.gif|\.zip|\.rar)$ /index.php?apf-rewrited-query=/page%{REQUEST_URI}&%{QUERY_STRING} [NC,L]
Edit2:
Der Action-Stack des Frontcontrollers ist auch leer. Wie erwähnt wird im bootstrap folgende Filter gesetzt.

Code: Alles auswählen

Registry::register(
        'apf::core::filter',
        'FrontControllerInputFilter',
        new FilterDefinition('core::filter::input','FrontcontrollerRewriteRequestFilter')
        );
Registry::register(
        'apf::core::filter',
        'OutputFilter',
        new FilterDefinition('core::filter::output','HtmlLinkRewriteFilter')
        );
Fehlt eventuell noch ein zusätzlicher Filter, der für die Actions benötigt wird, so dass diese unter aktivem URLRewriting funktionieren?

Re: Action-Link bei URLRewriting

Verfasst: 20.05.2011, 17:08:32
von dr.e.
Hallo Florian,
Habe ich irgendetwas nicht beachtet? Oder ist der Aufruf falsch?
Im Rewrite-Modus müsste die URL
domain.tld/kontakt/~/biz-action/contact
lauten, ansonsten kann die Action nicht aufgelöst werden. Ansonsten sollte die Konfiguration prinzipiell richtig sein (siehe http://adventure-php-framework.org/Seit ... -Rewriting).

Gemäß Doku sollte

Code: Alles auswählen

    Registry::register(
            'apf::core::filter',
            'FrontControllerInputFilter',
            new FilterDefinition('core::filter','FrontControllerInputFilter')
            );
genutzt werden. Für die Ausgabe ist der
Registry::register(
'apf::core::filter',
'OutputFilter',
new FilterDefinition('core::filter','GenericOutputFilter')
);[/code]
schon vorkonfiguriert (wie auch der FrontControllerInputFilter), du musst nur noch

Code: Alles auswählen

Registry::register('apf::core','URLRewriting',true); 
setzen.

Ich hoffe, das hilft dir weiter. Ansonsten kannst du auch mit 1.14 schon die FilterChain-Features nutzen - diese wurden in 1.13 zunächst versteckt eingeführt, das aber nur, wenn es so nicht klappt.

Re: Action-Link bei URLRewriting

Verfasst: 22.05.2011, 19:58:15
von APFelsahne
dr.e. hat geschrieben:Hallo Florian,
Habe ich irgendetwas nicht beachtet? Oder ist der Aufruf falsch?
Im Rewrite-Modus müsste die URL
domain.tld/kontakt/~/biz-action/contact
lauten, ansonsten kann die Action nicht aufgelöst werden. Ansonsten sollte die Konfiguration prinzipiell richtig sein (siehe http://adventure-php-framework.org/Seit ... -Rewriting).
merci, das wars! hat ich übersehen in der doku, dass aus dem doppelpunkt auch ein slash wird. :D