проблема маршрутизации CakePHP (или, возможно, просто путаница) - PullRequest
0 голосов
/ 29 июля 2010

Я только начал изучать cakephp и получил пример Blog , работающий за исключением маршрутизации, я все еще не совсем уверен, как он работает после прочтения многих, многих документов по маршрутизации (включая те, что в официальной кулинарной книге).

Моя проблема связана с корневой маршрутизацией '/', я хочу, чтобы она перешла к функции index () в PostsController, поэтому я использую:

Router::connect ('/', array('controller'=>'posts', 'action'=>'index'));

Но это не сработает, если я перейду к URL: localhost /

Это, вероятно (наиболее определенно), потому что я не знаю, куда поместить папку / установку cake_1_3, в настоящее время мое дерево каталогов для localhost (в htdocs) выглядит следующим образом:

-htdocs> Сообщения> cake_1_3

Это означает, что при переходе к: localhost / я ничего не получаю, а при переходе к: localhost / posts / я ничего не получаю, только список каталогов для папки " сообщения "который показывает, у меня есть каталог" торт_1_3 ".

Только когда я перехожу на URL: localhost / posts / cake_1_3 / posts / выполняет маршрутизацию, так как в нем видны вторые «записи» и, таким образом, запускается функция «index» "PostsController".

Очевидно, что это не то, что я хочу, я хочу иметь возможность перейти на: localhost / posts / и использовать функцию индекса PostsController.

Обновление: я на самом деле пытался вынуть все содержимое CakePHP из "cake_1_3" и просто в "posts", но затем мне нужно перейти на: localhost / posts / posts / , чтобы он использовал индекс () функция PostsController.

Можно ли как-то просто перейти к localhost / posts / , и я получу функцию index () запущенного PostsController?

Я знаю, что это, вероятно, очень простая проблема, и я просто что-то упускаю, потому что я так устал (ну, в любом случае, это мое оправдание), но я искал около 3 часов сейчас и не возражал рука помощи.

Спасибо за ваше время,

InfinitiFizz

P.S. Я только что понял, что могу сбросить все установочные файлы / папки CakePHP в корень (htdocs), и тогда localhost / posts / будет работать, но у меня есть множество различных тестовых сайтов в их собственных папках в htdocs / и поэтому я бы предпочел, чтобы этот пост тестировался и в его собственной папке, не смешивая все папки CakePHP со всеми папками других веб-сайтов.

1 Ответ

2 голосов
/ 29 июля 2010

Чтобы было ясно, о каких каталогах мы говорим, установка Cake поставляется с этими папками:

/
  app/
    webroot/
  cake

Вам нужно будет зайти в верхнюю директорию / в вашем браузере, чтобы получить ответиз торта вообще.Все маршруты относятся к этому верхнему каталогу /.

Допустим, вы установили Cake на свой веб-сервер следующим образом:

/
  htdocs/
    someotherproject/
    mycakeapp/
      app/
        webroot/
      cake/

Каталог htdocs является корнем вашего каталога.веб сервер.Если вы перейдете на http://localhost/, ваш веб-сервер ответит содержимым /htdocs/.Он даже не вызывает Cake, поэтому Cake ничего не может направить.

Вам придется открыть http://localhost/mycakeapp/, чтобы вызвать Cake.Оттуда, Cake сделает свою маршрутизацию.Маршрут Cake Router::connect('/', …) соответствует URL http://localhost/mycakeapp/.Все маршруты Cake * относительно пути установки приложения .Маршрутизация Cake является внутренней маршрутизацией приложения, она не соответствует абсолютному URL.

Если вы хотите, чтобы http://localhost/ было вашим приложением Cake, Cake должен быть единственным приложением, расположенным в /htdocs/.У вас не может быть нескольких приложений в корневом каталоге, но ни одно из них не должно быть «корневым приложением» † ‡.

Для целей локальной разработки это должно быть прекрасно.При загрузке приложения на реальный сервер с реальным доменом вы обычно делаете его единственным приложением.


† Ну, вы могли бы , со сложными правилами перезаписи,конфигурации виртуального хоста или путем помещения файлов в папку Cake /app/webroot/.Хотя обычно больше хлопот, чем стоит, держите свои проекты отдельно.
‡ Вы не можете иметь свой торт и есть его тоже. Зин

...