Отправить параметры в URL по-другому? - PullRequest
0 голосов
/ 10 марта 2012

Я не знаю, как написать заголовок для этого вопроса. Во всяком случае, это сценарий ..

У меня есть такая таблица

лицо

id | username | firstname | lastname
 1 |    ab    |     Aaaa  |    Bbbb
 2 |    yz    |     Yyyy  |    Zzzz

Я использую следующий URL для отображения профиля пользователя:

example.com/person/profile/index?id=1   // Show person 1 profile
example.com/person/profile/index?id=1   // Show person 2 profile

Здесь: person - это модуль, profile - это контроллер, а index - это действие, используемое для получения и отображения профиля пользователя с использованием параметра id

Вышеописанный сценарий работает отлично.

Вопрос:

Теперь я хочу использовать следующие URL-адреса для получения профиля пользователя с именами пользователей

example.com/person/profile/ab   // Show person 1 profile
example.com/person/profile/yz   // Show person 2 profile

Есть идеи?

Ответы [ 2 ]

4 голосов
/ 10 марта 2012

Если вы хотите остаться, используя маршрут ZF по умолчанию, просто измените ссылку на example.com/person/profile/name/ab и получите доступ к имени с вашего контроллера с помощью $this->getRequest()->getParam('name')

Также вы можете сделать конкретный маршрут, вы можете найти документацию здесь: http://framework.zend.com/manual/en/zend.controller.router.html

Также вы можете настроить собственный маршрут, используя конфигурационный файл, используя ресурсы:

resources.router.routes.profile.route = "/person/profile/:name"
resources.router.routes.profile.defaults.controller = "person"
resources.router.routes.profile.defaults.action = "profile"
resources.router.routes.profile.reqs[] = "name"
1 голос
/ 10 марта 2012

По умолчанию вам не нужно ничего делать.Просто добавьте /name/THENAME к последнему из URL.

Затем

  1. Получите значение имени

    $name = $this -> _request -> getParam('name');
    
  2. Используйте эти значения для извлечения идентификатора из базы данных

  3. И используйте его как хотите
...