In CakePHP ist es möglich, interne und externe Routen zu haben?

stimmen
1

Eine Facebook - App auf meinem Server gehostet bei, sagen wir, http://server.com/projects/fbapp/ , wird aber immer nur gesehen in Facebook auf, zum Beispiel, http://apps.facebook.com/fbapp/ .

Mit CakePHP dies stellt ein Problem dar - sollten Routen mit „/ Projekt / fbapp“ oder einfach nur „fbapp“ vorangestellt werden?

Es ist ein Problem, weil Routen verwendet werden, nicht nur für eingehende Anfragen Routing, sondern auch Links zum Erzeugen (und bilden Aktionen usw.).

Als Flickschusterei, habe ich jetzt zwei Routing-Instruktionen pro Strecke:

Router::connect('/pages/*', array('controller' => 'pages', 'action' => 'display'));
Router::connect('projects/fbapp/pages/*', array('controller' => 'pages', 'action' => 'display'));

Mit dem ersten kein Präfix wegen einer Leitung erfordert ich bootstrap.php aufgenommen haben:

Configure::write('App.base', '/fbapp');

Was während der Rückwärts Routing-Operationen tritt in.

Meine Frage ist, ob es eine elegantere Möglichkeit, dies zu tun? Dies scheint sehr hässlich und ich bin sicher, dass es nicht sehr Cakey.

Veröffentlicht am 13/05/2009 um 00:16
quelle vom benutzer
In anderen Sprachen...                            


3 antworten

stimmen
1

Überqueren Sie veröffentlichen meinen Kommentar auf Anfrage:

Wäre das nicht ein (Apache) Umschreiben des Verkehrs von Facebook die eleganteste Lösung sein? Ihre interne Maschine müsste nur mit einem Weg umgehen, und wenn Sie die App mit einem anderen Dienst / Plattform zu einem späteren Zeitpunkt integrieren wollten, würden Sie nur lieber eine andere Rewrite-Regel hinzufügen, müssen als sich mit der Anwendung durcheinander.

Beantwortet am 18/05/2009 um 03:44
quelle vom benutzer

stimmen
1

Ich werde mal ran, basierend auf Fragen Apache und einige Regeln , die ich auf ein paar alten Projekte in Kraft gesetzt habe. Ich denke , lege es in der .htaccess - Datei in Ihrem Webroot würde den Trick tun (aber das ist eine Vermutung).

Options +FollowSymLinks
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_URI} ^/projects/fbapp/pages.*
RewriteRule ^/projects/fbapp/pages/(*)$ /pages/$1 [L]

Die oben sollte (wenn ich es richtig gemacht) umschreiben jede Anfrage passende http://server.com/projects/fbapp/pages/ * zu http://server.com/pages/ * dh http://server.com/ Projekte / fbapp / pages / foo => http://server.com/pages/foo .

Bearbeiten Gefunden gepostet im Abschnitt Apache.

Beantwortet am 18/05/2009 um 21:38
quelle vom benutzer

stimmen
1

Sie brauchen gar nichts zu tun! Kuchen kümmern Basis - URL für Sie, so dass Sie nicht die Routen duplizieren müssen, noch kümmern sich um die Basis - URL. Was Sie tun müssen , ist zu routen Ihre relative URL anstelle von projects/fbapp/, oder was auch immer Sie wollen Präfix zu handhaben :

Router::connect('/pages/*', array('controller' => 'pages', 'action' => 'display'));

So habe ich alle Anfragen in meiner app behandeln, die ich unter bereitstellen http://www.example.com, während lokal ich es unter haben http://localhost/workspace/example.com/trunk/deploy. Es wirkt wie ein Zauber in beiden Umgebungen.

Beantwortet am 22/05/2009 um 17:45
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more