Как сделать красивые URL в Zend Framework? - PullRequest
0 голосов
/ 03 апреля 2012

Мне интересно, как я могу сделать красивые URL с помощью Zend Framework?

немного фона:

Мой URL сейчас: www.website.com/profile/43

структура базы данных:

id   userid    name
1    43        John
..   ...       ...

и мой роутер:

$router->addRoute('getUserid',
            new Zend_Controller_Router_Route(
                    '/profile/:id',
                    array(
                            'module' => 'profile',
                            'controller' => 'social',
                            'action' => 'index'

                    )
            )
    );

очевидно, я хотел бы, чтобы URL был: www.website.com/profile/John

Из того, что я изучаю, похоже, я могу многое сделать с роутером, добавить регулярные выражения и т. Д., Но ничего о том, как заменить id, как в моем случае, нет.

Мне нужно сделать запрос, чтобы узнать имя, и я подумал сделать это в предзапуске и использовать результат в качестве переменной по умолчанию, но я не знаю id, поскольку $front->getRequest()->getParams() не в наличии:

$name = // do query to find out the name;

$router->addRoute('getUserid',
            new Zend_Controller_Router_Route(
                    '/profile/:id',
                    array(
                            'id' => $name,
                            'module' => 'profile',
                            'controller' => 'social',
                            'action' => 'index'

                    )
            )
    );

может быть, я иду на это с неправильной точки. Есть идеи?

спасибо.

1 Ответ

1 голос
/ 03 апреля 2012

Это более общий вопрос, чем ZF.

То, что вы можете сделать здесь, чтобы сделать URL красивым и сохранить ваш URL с высоким рейтингом, реализовано в WordPress и называется slugs. Slug - это просто заголовок сообщения (только пробелы, замененные дефисом и т. Д.). Но очевидно, что могут быть два поста с одинаковым названием (и, автоматически, слаг). Таким образом, если слаг для нового поста уже существует, к нему добавляется номер «1» в конце. Если он также существует, к нему добавляется «2» и повторяется до тех пор, пока он не получит нечто уникальное Очевидно, вам нужно добавить столбец в таблице для слаг.

Так что в вашем случае первый пользователь с именем John имеет URL www.website.com/profile/John. Следующий пользователь с именем Джон имеет URL www.website.com/profile/John1 и т. Д.

...