CakePHP - Как я могу определить маршрут к файлу не-CakePHP, который не имеет каких-либо контроллеров, связанных с ним? - PullRequest
4 голосов
/ 09 марта 2010

Я сейчас работаю в CakePHP. Я хотел бы знать, как я могу определить маршрут к файлу не-cakephp, с которым не связаны никакие контроллеры?

Для удобства я поместил этот файл (sitemap.php) в папку webroot. Теперь мне нужно как-то направиться к нему!

Ответы [ 2 ]

2 голосов
/ 09 марта 2010

Похоже, вы хотите иметь возможность использовать функциональность из sitemap.php в вашем приложении cakephp. Лучший способ включить это в cakephp - настроить его в качестве продавца. Выполните следующие действия:

1- Поместите файл в папку app / vendor. 2- Чтобы использовать файл в контроллере (или где-либо еще), добавьте:

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

Если это просто файл со списком функций, теперь вы можете просто вызывать функции так же, как и в любом другом файле PHP. Поэтому, если у вас есть функция show_links (), например, в контроллере, куда вы импортировали vendor / sitemap, вы просто помещаете:

show_links();

Если это класс, то вам нужно будет создать экземпляр класса и использовать его так же, как и в любом другом месте:

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

Итак, теперь вы готовы настроить маршрут для включения функциональности карты сайта в файл config / rout.php:

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

Это обработает последовательность кода, содержащуюся в действии, которое затем воспроизведет файл sitemap.php.

Итак, в двух словах, вы увидите что-то вроде этого:

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

И в config / rout.php вы добавите:

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

Затем, когда вы посещаете URL:

http://mysite/sitemap.xml

Он будет направлен к:

http://mysite/site_maps/show_map

Для получения дополнительной информации о маршрутизации, вы можете посетить: http://book.cakephp.org/view/542/Defining-Routes

Удачи и счастливого кодирования!

ОБНОВЛЕНО!

1 голос
/ 09 марта 2010

Я бы пропустил весь процесс CakePHP, если вы на самом деле его не используете. Если ваш .htaccess не является слишком жадным (перезаписывает запросы в файл, * существующий *), вы должны иметь доступ к sitemap.php напрямую. Если вы не можете обновить файл .htaccess, чтобы не перезаписывать существующие файлы.

Теперь, если внешним службам нужен файл `sitemap.xml ', не пытайтесь переписать его в CakePHP, просто переписать его с помощью файла .htaccess (что, по вашим комментариям, возможно, вы делаете?) .

Суть: Не переписывайте без необходимости, и не переписывайте с CakePHP, если вы даже не используете его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...