CakePHP – Come posso definire il path verso un file non-cakephp che non ha alcun controller associato ad esso?

Sto lavorando su CakePHP ora. Mi piacerebbe sapere come posso definire un path per un file non-cakephp che non ha alcun controller associato ad esso?

Ho messo questo file (sitemap.php) nella cartella webroot, per mia comodità. Ora ho bisogno di indirizzarmi in qualche modo!

Sembra che tu voglia essere in grado di utilizzare le funzionalità di sitemap.php nella tua applicazione cakephp. Il modo di scommessa per includerlo in cakephp è configurarlo come un venditore. Segui questi passi:

1- Inserisci il file nella cartella app / venditore. 2- Per utilizzare il file in un controller (o altrove), aggiungere:

 App::import('Vendor','sitemap'); 

Se si tratta solo di un file con un elenco di funzioni, ora puoi semplicemente call le funzioni come faresti in qualsiasi altro file PHP. Quindi se hai una function chiamata show_links () per esempio, nel controller in cui hai importto il fornitore / sitemap, metti semplicemente:

 show_links(); 

Se è una class, dovrai istanziare la class e usarla come faresti in qualsiasi altro posto:

 App::import('Vendor','sitemap'); $sitemap = new Sitemap; $sitemap->show_links(); 

Quindi, ora sei pronto per impostare il path per includere la funzionalità Sitemap nel file config / routes.php:

 Router::connect('/sitemap.xml', arrays('controller' => 'YOUR_CONTROLLER', 'action' => 'YOUR_ACTION')); 

Questo elaborerà la sequenza di codice contenuta nell'azione che verrà quindi riprodotta dal file sitemap.php.

Quindi, in poche parole, vedresti qualcosa del genere:

 <?php class SiteMapController extends AppController { var $name = 'Tests'; function show_map() { App::import('Vendor','sitemap'); $sitemap = new Sitemap; $sitemap->show_links(); } } ?> 

E nel file config / routes.php dovresti aggiungere:

 Router::connect('/sitemap.xml', arrays('controller' => 'site_maps', 'action' => 'show_map')); 

Quindi, quando visiti l'url:

 http://mysite/sitemap.xml 

Si dirigerà verso:

 http://mysite/site_maps/show_map 

Per ulteriori informazioni sul routing, è ansible visitare: http://book.cakephp.org/view/542/Defining-Routes

Buona fortuna e Happy Coding!

AGGIORNATO!

Salterei l'integer process di CakePHP se non lo stai effettivamente utilizzando. A less che il tuo .htaccess non sia troppo avido (riscrivendo le richieste di file che * esistono *), dovresti essere in grado di accedere direttamente a sitemap.php . Se non puoi, aggiorna il file .htaccess per non riscrivere i file esistenti.

Ora, se i servizi esterni richiedono che il file sia "sitemap.xml", non provare a riscrivere in CakePHP, basta riscriverlo con il file .htaccess (che dai tuoi commenti, forse stai facendo?).

La linea di fondo: non riscrivere a less che non sia necessario, e non riscrivere con CakePHP se non lo si sta nemless utilizzando.