URL-адреса с заголовком элемента
Вопрос
Я привык указывать идентификаторы в URL-адресе для сопоставления с элементом в базе данных:
/отели/1
но что, если я хочу получить название отеля с идентификатором 1 и поместить его в URL и заменить пробелы дефисами?
/отели/отель-bianca
Я использую Kohana, и существует концепция маршрутизации (которая в значительной степени присутствует во всех фреймворках MVC), но, похоже, я не могу заставить ее работать
Как мне это сделать?
Решение
Поскольку я ничего не знаю о kohana, я собираюсь представить возможный PHP-ответ.
Не могли бы вы передать идентификатор через URL и запросить его с помощью PHP, и если вы передаете название отеля, чтобы оно соответствовало элементу в базе данных с названием отеля в качестве его поля?
Другие советы
Для этой цели я использую специальное поле в таблице базы данных с именем url :) Так, например, / controller/open/urladress будет искать поле url с 'urladress' внутри, чтобы открыть : D Я не думаю, что вы можете изменить uri на лету)
В контроллере вы могли бы выполнить поиск по имени в базе данных.Я привык к Kohana 2.3.4 с ORM, так что вот как я бы это сделал:
// first you need to replace all hyphens with spaces
$name = str_replace('-', ' ', $parameter);
// search your db for the hotel by name
$hotel = ORM::factory('hotel')->where('name', $name)->find();
// check to make sure it is loaded
if ( ! $hotel->loaded)
{
// Do something i.e. 404 page or let them know it wasn't found
}
Это позволило бы вам указать по имени.Вы также могли бы добавить проверку, был ли параметр целым числом или нет, и выполнить поиск по идентификатору, если это было так.