Почему symfony link_to helper добавляет .php к имени приложения - PullRequest
1 голос
/ 25 мая 2011

У меня есть приложение Symfony 1.4 под названием client с модулем device.Вот часть файла routing.yml, используемого в этом приложении:

device_detail:
  url: /device/:device_name
  param: { module: device, action: show }

device_manage:
  url: /manage/:device_name
  param: { module: device, action: manage }

Я могу загрузить страницу http://example.com/client/device/jdoe без проблем.Эта страница содержит ссылки, созданные с помощью помощника link_to.Например,

link_to("Manage this device",  "manage/{$device_name}")

генерирует URL http://example.com/client.php/manage/jdoe.

Мой вопрос: почему помощник link_to генерирует URL, содержащий строку client.php, а не просто client?Кажется странным, что адрес страницы использует client, но link_to меняет это на client.php.

Ответы [ 3 ]

2 голосов
/ 25 мая 2011

Проверьте файл settings.yml вашего приложения в apps/<YOURAPP>/config/settings.yml и соответственно настройте флаг конфигурации no_script_name для соответствующей среды. Очистите кеш позже. Обычно ваш режим разработки будет иметь no_script_name равным false, а ваш продукт будет иметь true.

Пример:

prod:
  .settings:
    no_script_name: true

dev:
  .settings:
    no_script_name: false

Редактировать : Как указывает dxb, это также верно только для одного приложения в вашем проекте. Если у вас есть несколько приложений в одном и том же проекте, к которому вы хотите применить это, вам нужно применить префикс к маршрутам (например, /admin), использовать другой домен / поддомен или подобное решение.

0 голосов
/ 27 мая 2011

Убедитесь, что у вас установлен HTACCESS и включен mod_rewite в Apache

0 голосов
/ 25 мая 2011

Вы можете установить параметр в settings.yml, чтобы удалить имя приложения из вашего URL.
прод:
.settings
no_script_name: off

Это работает только для одного приложения в вашем проекте.

...