In CakePHP, è possibile avere percorsi interni ed esterni?

voti
1

Un'applicazione Facebook è ospitato sul mio server, diciamo, http://server.com/projects/fbapp/ , ma è sempre e solo visto in Facebook a, per esempio, http://apps.facebook.com/fbapp/ .

Utilizzando CakePHP questo presenta un problema - deve essere preceduto da percorsi / progetto / fbapp o semplicemente fbapp?

E 'un problema, perché i percorsi sono utilizzati non solo per il routing richieste in entrata, ma anche per la generazione di link (e formano le azioni, ecc).

Come un kludge, ora ho due istruzioni di routing per tratta:

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

Con il primo che non richiedono un prefisso a causa di una linea Ho incluso a bootstrap.php:

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

Che prende in durante le operazioni di routing inverso.

La mia domanda è se c'è un modo più elegante per fare questo? Questo sembra molto brutto e sono sicuro che non è molto cakey.

È pubblicato 13/05/2009 alle 00:16
fonte dall'utente
In altre lingue...                            


3 risposte

voti
1

Attraversare la pubblicazione il mio commento su richiesta:

Non sarebbe un (apache) riscrittura del traffico da facebook essere la soluzione più elegante? La macchina interna avrebbe solo a che fare con un percorso, e se si voleva integrare l'applicazione con un altro servizio / piattaforma in un secondo momento, si avrebbe solo per aggiungere un'altra regola di riscrittura piuttosto che scherzi con l'applicazione stessa.

Risposto il 18/05/2009 a 03:44
fonte dall'utente

voti
1

Avrò un andare, sulla base Chiedi Apache e alcune regole che ho messo in atto su alcuni vecchi progetti. Credo che metterlo nel file .htaccess nella vostra Webroot farebbe il trucco (ma questa è una supposizione).

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

Quanto sopra dovrebbe (se ho fatto bene) riscrivere qualsiasi richiesta corrispondenza http://server.com/projects/fbapp/pages/ * a http://server.com/pages/ * ie http://server.com/ progetti / fbapp / pages / foo => http://server.com/pages/foo .

Modifica Trovato questo postato nella sezione Apache.

Risposto il 18/05/2009 a 21:38
fonte dall'utente

voti
1

Non c'è bisogno di fare nulla! Torta si prenderà cura di URL di base per voi, quindi non è necessario duplicare i percorsi, né curare l'URL di base. Quello che dovete fare è quello di instradare il vostro URL relativo invece di utilizzare projects/fbapp/, o qualsiasi altra cosa che si desidera gestire prefisso:

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

È così che ho gestire tutte le richieste di mia app, che schiero sotto http://www.example.com, mentre a livello locale ce l'ho sotto http://localhost/workspace/example.com/trunk/deploy. Esso funziona come un fascino in entrambi gli ambienti.

Risposto il 22/05/2009 a 17:45
fonte dall'utente

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