ФорумПрограммированиеPHP для идиотов → Управление URL в Yii

Управление URL в Yii

  • Tekuto

    Сообщения: ? Репутация: N Группа: Адекваты

    Spritz 17 марта 2012 г. 10:47

    Изучаю Yii. Сейчас вот не могу разобраться с управление url.
    Создал через gii раздел Новости.

    Ссылка для просмотра новости имеет следующий формат:
    /news/view/id/1


    Необходимо, чтобы имела следующий:
    /news/slug


    Читаю туториалы. Использовать надо именнованные параметры для url.
    Задаю следующее правило:
    &#39;news/<slug>&#39;=>&#39;news/view&#39;,

    В итоге не работает.

    Проверяю через id:
    &#39;news/<id>&#39;=>&#39;news/view&#39;,

    Срабатывает нормально.

    В чем причина? Как понимаю, надо дополнительно указывать, что использую slug как именнованный параметр?
    Подскажите где.
  • phpdude

    Сообщения: 26614 Репутация: N Группа: в ухо

    Spritz 17 марта 2012 г. 11:07, спустя 19 минут 13 секунд

    я думаю что все просто. во первых - скорее всего yii уже знает что такое &lt;id> - (?&lt;id>\d+), а что такое слуг, она наверное не знает.

    тебе надо видимо както определить формат этого слуга, либо юзать полные регулярки.
    второе - я не понима, почему в жанго все еще нет форматируемых по умолчанию таких подстановок… прямо удивлен.
    Сапожник без сапог
  • mario

    Сообщения: ? Репутация: N Группа: Джедаи

    Spritz 17 марта 2012 г. 11:12, спустя 5 минут 17 секунд

    &#39;news/&lt;slug>&#39;=>&#39;news/view&#39;,

    меняем на
    &#39;news/<slug:\w+>&#39;=>&#39;news/view&#39;,
    {+++19+++} http://yiiframework.ru/doc/guide/ru/topics.url
  • phpdude

    Сообщения: 26614 Репутация: N Группа: в ухо

    Spritz 17 марта 2012 г. 11:20, спустя 8 минут 4 секунды

    ачуметь я был прав
    Сапожник без сапог
  • Tekuto

    Сообщения: ? Репутация: N Группа: Адекваты

    Spritz 17 марта 2012 г. 11:21, спустя 1 минуту

    я думаю что все просто. во первых - скорее всего yii уже знает что такое &lt;id> - (?&lt;id>\d+), а что такое слуг, она наверное не знает.

    Как я понял, не углубляясь в суть вопроса, кодогенератор автоматом подставляет $id, как параметр, и автоматом присваивает ему значением primary key.
    Чтобы не заморачиваться и не исправлять все, сделал так.

    Удалил id и сделал slug, как primary
    Пересоздал модель и crud.

    В итоге получил ссылку формата:
    news/view/id/slug


    Указал правило:
    &#39;news/<id>&#39;=>&#39;news/view&#39;,


    В итоге все норм))) {+++43+++}

    &#39;news/&lt;slug>&#39;=>&#39;news/view&#39;,

    меняем на
    &#39;news/<slug:\w+>&#39;=>&#39;news/view&#39;,
    {+++19+++} http://yiiframework.ru/doc/guide/ru/topics.url

    я и так делал тоже :D
  • Troy

    Сообщения: 2533 Репутация: N Группа: Джедаи

    Spritz 17 марта 2012 г. 11:22, спустя 1 минуту 20 секунд

    Tekuto, в итоге сделал через жопу, молодец) дуд, это ж хорошо, что фреймворк такой логичный
  • phpdude

    Сообщения: 26614 Репутация: N Группа: в ухо

    Spritz 17 марта 2012 г. 11:24, спустя 1 минуту 14 секунд

    Troy, мне похуй :)
    Сапожник без сапог
  • Tekuto

    Сообщения: ? Репутация: N Группа: Адекваты

    Spritz 17 марта 2012 г. 11:33, спустя 9 минут 24 секунды

    Tekuto, в итоге сделал через жопу, молодец)

    Почему через жопу? Кодогенератор автоматом подставляет $id, как get-параметр. можно, конечно, ручками исправить.
    ачуметь я был прав

    догадка стоящая, но не то. именнованные параметры без регулярного выражения тоже допускаются.
    тогда параметр допускает любые символы, кроме слеша. (это в туториале было).
  • adw0rd

    Сообщения: 22902 Репутация: N Группа: в ухо

    Spritz 17 марта 2012 г. 11:45, спустя 12 минут 14 секунд

    второе - я не понима, почему в жанго все еще нет форматируемых по умолчанию таких подстановок… прямо удивлен.

    они так сильно нужны? )
    adw/0
  • phpdude

    Сообщения: 26614 Репутация: N Группа: в ухо

    Spritz 17 марта 2012 г. 11:49, спустя 3 минуты 41 секунду

    они так сильно нужны? )

    ну согласись с ними было бы проще, не?))
    Сапожник без сапог
  • Professor

    Сообщения: ? Репутация: N Группа: Адекваты

    Spritz 17 марта 2012 г. 12:24, спустя 35 минут 34 секунды


    Удалил id и сделал slug, как primary
    Пересоздал модель и crud.

    п*ц =)
    Там просто в контролере нужно переменную назвать $slug а не $id, и все. function actionNews($slug){}
  • Tekuto

    Сообщения: ? Репутация: N Группа: Адекваты

    Spritz 17 марта 2012 г. 12:34, спустя 9 минут 8 секунд

    п*ц =)
    Там просто в контролере нужно переменную назвать $slug а не $id, и все. function actionNews($slug){}

    А можно подробнее? Или ссылку для изучения?)
    Где эту переменную обозвать надо?
    {+++56+++}
    function actionNews($slug){}

    ??? {+++82+++} Troy, кстати. У тебя ведь финле на yii?
    У тебя как реализовано?
  • mario

    Сообщения: ? Репутация: N Группа: Джедаи

    Spritz 17 марта 2012 г. 14:14, спустя 1 час 40 минут 9 секунд

    А можно подробнее? Или ссылку для изучения?)
    Где эту переменную обозвать надо?

    блять в экшене!!! Бля доку читать не учили? Кинул же ссылку туда… я в ахуе ))) {+++78+++}
    &#39;news/<slug:\w+>&#39;=>&#39;news/view&#39;,

    newsController:
    viewAction($slug) {
    $slug = (string) $slug;//вот твой слуг
    }
    {+++43+++} бля я пьян, так что наверное немного грубо, но пох, зато поймешь ) {+++137+++}
    &#39;news/<slug:\w+>&#39;=>&#39;news/view&#39;,

    newsController:
    viewAction($slug) {
    $slug = (string) $slug;//вот твой слуг
    }


    вот тут про это прочти http://yiiframework.ru/doc/guide/ru/basics.controller в разделе &quot;Привязка параметров действий&quot;
  • Tekuto

    Сообщения: ? Репутация: N Группа: Адекваты

    Spritz 17 марта 2012 г. 17:11, спустя 2 часа 57 минут 25 секунд

    блять в экшене!!! Бля доку читать не учили? Кинул же ссылку туда… я в ахуе )))

    mario, не ругайся) читал я эти туториалы) все прочитал до того, как писать сюда)))
    По несколько раз прочитал. И этот самый, и про создание блога.

    знаю, что так, как ты написал, можно. и что можно вот так:

    viewAction($slug) {

    }


    Вся пизда от того, что я вьюхи не изменил))) И забыл про них напрочь)))
    ПиздеЦ!!! Убил дохуя времени из-за невнимательности! {+++153+++} Нет, ну пиздец какой. столько времени убил на эту хуйню
  • Troy

    Сообщения: 2533 Репутация: N Группа: Джедаи

    Spritz 17 марта 2012 г. 22:21, спустя 5 часов 9 минут 42 секунды

    Tekuto, да на Yii, реализовано как в примере профессора и марио.

Пожалуйста, авторизуйтесь, чтобы написать комментарий!