Приступил к разработке проекта под Yii и столкнулся с проблемкой:
$this->createUrl('main/firm/identy')
выводит /index.php/main/firm/identy
тогда как:
'urlManager'=>array(
'urlFormat'=>'path',
'rules'=>array(
'main/firm/identy'=>'search/identy',
),
),
Где копать?
KJedi
(Konstantin Mirin)
July 21, 2009, 10:14am
2
Приступил к разработке проекта под Yii и столкнулся с проблемкой:
$this->createUrl('main/firm/identy')
выводит /index.php/main/firm/identy
В качестве параметров в createUrl передается:
контроллер/действие
параметры, которые встречаются в правиле
В данном случае должно быть:
$this->createUrl('search/identy')
KJedi:
В качестве параметров в createUrl передается:
контроллер/действие
параметры, которые встречаются в правиле
В данном случае должно быть:
$this->createUrl('search/identy')
Для наглядности приведем несколько примеров. Предположим, что наш набор правил состоит из трех правил:
array(
'posts'=>'post/list',
'post/<id:\d+>'=>'post/read',
'post/<year:\d{4}>/<title>'=>'post/read',
)
Вызов $this->createUrl(‘post/list’) сгенерирует /index.php/posts. Здесь было применено первое правило.
http://www.yiiframework.com/doc/guide/ru/topics.url
Это выдержка из руководства. Так что ваш ответ неверен в корне. RTFM
andy_s
(Arekandrei)
July 21, 2009, 7:29pm
4
KJedi прав, слева указывается урл, справа - модуль/контроллер/экшен. Так что если у вас контроллер search, экшен - identy, то вызывать их можно будет по урлу /main/firm/identy и во всех методах, создающих урл, при указании им в качестве параметра search/identy атрибут href будет подменяться /main/firm/identy
andy_s:
KJedi прав, слева указывается урл, справа - модуль/контроллер/экшен. Так что если у вас контроллер search, экшен - identy, то вызывать их можно будет по урлу /main/firm/identy и во всех методах, создающих урл, при указании им в качестве параметра search/identy атрибут href будет подменяться /main/firm/identy
Контроллер у меня /main/firm/identy (это контроллер модуля)
И в руководстве четко сказано, контроллер в конфиге слева, алиас справа.
Поэтому KJedi нифига не прав, а вы просто не поняли вопроса.
Так где копать, чтобы заработало?
KJedi
(Konstantin Mirin)
July 22, 2009, 5:56am
6
a.spiridonov, вы сначала сами пишете одно, потом абсолютно другое.
Читаем внимательно вашу же выдержку из руководства:
array(
'posts'=>'post/list',
'post/<id:\d+>'=>'post/read',
'post/<year:\d{4}>/<title>'=>'post/read',
)
С какой стороны здесь алиасы? Мне кажется слева… Методу createUrl передается контроллер, а он уже смотрит правило и генерит соответствующий урл.
Все дело в том, что в первом вопросе мне показалось что ‘main/firm/identy’ - это алиас, а search/identy - это контроллер. Я даже подумать не мог, что у вас это наоборот
Так что для того чтобы заработало, надо переписать правило:
'urlManager'=>array(
'urlFormat'=>'path',
'rules'=>array(
'search/identy'=>'main/firm/identy',
),
),
И вызвать метод точно так же:
$this->createUrl('main/firm/identy')
И будет вам счастье. Действительно RTFM
KJedi
(Konstantin Mirin)
July 22, 2009, 5:58am
7
И кроме того, перед тем как кричать что ответ в корне неверен, можно обратить внимание на дату регистрации в форуме, количество постов и прикинуть, какая вероятность того что после 7 месяцев работы с Yii я могу в таких вещах ошибаться
KJedi:
И кроме того, перед тем как кричать что ответ в корне неверен, можно обратить внимание на дату регистрации в форуме, количество постов и прикинуть, какая вероятность того что после 7 месяцев работы с Yii я могу в таких вещах ошибаться
Сам уже разобрался.
[b]
Компонент urlManager кеширует свои правила. После чистки кеша правила стали применяться.[/b]
P.S. Да хоть 100 лет на форуме просиди, ума не прибавится. Хоть доки правильно читать научись.
andy_s
(Arekandrei)
July 22, 2009, 8:20am
9
Похоже господин a.spiridonov всё-таки убедил Yii, что он делает всё правильно
KJedi
(Konstantin Mirin)
July 25, 2009, 5:30am
10
a.spiridonov:
Сам уже разобрался.
[b]
Компонент urlManager кеширует свои правила. После чистки кеша правила стали применяться.[/b]
P.S. Да хоть 100 лет на форуме просиди, ума не прибавится. Хоть доки правильно читать научись.
Странно, у меня работает так как я говорю, у всех остальных кто пробовал по вроде бы тоже. Фиг знает как вы сделали наоборот, даже интересно. Можно код посмотреть? Сами правила и генерацию урла.
KJedi:
Странно, у меня работает так как я говорю, у всех остальных кто пробовал по вроде бы тоже. Фиг знает как вы сделали наоборот, даже интересно. Можно код посмотреть? Сами правила и генерацию урла.
Я просто ошибся, когда пример кода приводил, действительно надо местами поменять. Так что извиняюсь за резкость.
Но все равно, заработало только после чистки кеша.