I CakePHP, er det mulig å ha interne og eksterne ruter?

stemmer
1

En Facebook-applikasjonen ligger på serveren min på, si, http://server.com/projects/fbapp/ , men er bare noen gang sett Facebook at, for eksempel, http://apps.facebook.com/fbapp/ .

Bruke CakePHP dette utgjør et problem - bør rutene bli prefikset / prosjekt / fbapp eller bare fbapp?

Det er et problem fordi rutene brukes ikke bare for å rute innkommende forespørsler, men også for å generere koblinger (og danne handlinger etc).

Som en kludge, jeg har nå to ruting instruksjoner per rute:

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

Med den første som ikke krever et prefiks på grunn av en linje jeg har tatt til bootstrap.php:

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

Som slår inn under reversrutineoperasjoner.

Mitt spørsmål er om det er en mer elegant måte å gjøre dette? Dette virker veldig stygg, og jeg er sikker på at det ikke er veldig klumpete.

Publisert på 12/05/2009 klokken 23:16
kilden bruker
På andre språk...                            


3 svar

stemmer
1

Krysse oppslaget min kommentar etter forespørsel:

Ville ikke en (apache) omskriving av trafikk fra facebook være den mest elegante løsningen? Intern maskin ville bare nødt til å forholde seg til en sti, og hvis du ønsket å integrere programmet med en annen tjeneste / plattform på et senere tidspunkt, vil du bare nødt til å legge til en annen omskrivingsregel heller enn å rote med selve programmet.

Svarte 18/05/2009 kl. 02:44
kilden bruker

stemmer
1

Jeg skal ha en gå, basert på Be Apache og noen regler jeg har satt på plass på noen gamle prosjekter. Jeg tror setter den i .htaccess filen i Webroot ville gjøre knep (men det er en gjetning).

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

Ovennevnte skal (hvis jeg gjorde det riktig) omskrive alle forespørsler matchende http://server.com/projects/fbapp/pages/ * til http://server.com/pages/ * dvs. http://server.com/ prosjekter / fbapp / sider / foo => http://server.com/pages/foo .

Rediger Fant dette postet i Apache delen.

Svarte 18/05/2009 kl. 20:38
kilden bruker

stemmer
1

Du trenger ikke å gjøre noe i det hele tatt! Kake vil ta seg av basen URL for deg, slik at du ikke trenger å duplisere rutene, og heller ta vare på basen URL. Hva du trenger å gjøre er å dirigere relativ URL-adresse i stedet for å bruke projects/fbapp/, eller hva prefikset du ønsker å håndtere:

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

Det er slik jeg håndterer alle forespørsler i min app, som jeg brukes under http://www.example.com, mens lokalt jeg har det under http://localhost/workspace/example.com/trunk/deploy. Det fungerer som en sjarm i begge miljøer.

Svarte 22/05/2009 kl. 16:45
kilden bruker

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