проблема с ЧПУ

не могу понять в чём может причина, пытаюсь сделать простой листинг с постраничником а также с сортировкой, но получается что-то одно, либо сортировка но без постраничника либо постраничник но без сортировки. Задаю такие правила




'urlManager'=>array(

 

  'showScriptName' => false,

  'urlFormat'=>'path',		

  'rules'=>array( 


'test/list/<cat:\d+>/<sort>'=>'test/list',

'test/list/<cat:\d+>'=>'test/list', 

в этом случаи ссылки постраничника не имеют индекса страниц, все ссылки каждой страницы указывается на только project/ то есть вот так


    <li><a href="/project/">2</a></li>

    <li><a href="/project/">3</a></li>

    <li><a href="/project/">4</a></li>

    <li><a href="/project/">5</a></li>

    <li><a href="/project/">6</a></li>

а сортировка


Array

(

    [id] => <a href="/project/test/list/9/id">ID</a>

    [title] => <a href="/project/test/list/9/title">Заголовок</a>

    [content] => <a href="/project/test/list/9/content">Текст</a>

    [create_date] => <a href="/project/test/list/9/create_date">Дата</a>

    [status] => <a href="/project/test/list/9/status">Статус</a>

)

9 - номер раздела

если указываю такое правило


'test/list/<cat:\d+>/<page>'=>'test/list',

'test/list/<cat:\d+>'=>'test/list', 

то тут всё наоборот, в постраничнике ссылки проставляются

&lt;li&gt;&lt;a href=&quot;/project/test/list/9/3&quot;&gt;3&lt;/a&gt;&lt;/li&gt;


&lt;li&gt;&lt;a href=&quot;/project/test/list/9/4&quot;&gt;4&lt;/a&gt;&lt;/li&gt;


&lt;li&gt;&lt;a href=&quot;/project/test/list/9/5&quot;&gt;5&lt;/a&gt;&lt;/li&gt;


&lt;li&gt;&lt;a href=&quot;/project/test/list/9/6&quot;&gt;6&lt;/a&gt;&lt;/li&gt;


&lt;li&gt;&lt;a href=&quot;/project/test/list/9/7&quot;&gt;7&lt;/a&gt;&lt;/li&gt;

а вот ссылки для сортировки отсутствуют, вот что выдаёт массив Test::sortLink($sort)


Array

(

    [id] => <a href="/project/">ID</a>

    [title] => <a href="/project/">Заголовок</a>

    [content] => <a href="/project/">Текст</a>

    [create_date] => <a href="/project/">Дата</a>

    [status] => <a href="/project/">Статус</a>

)

в правилах в начале используется ещё <cat:\d+> это id раздела, тоесть ссыли должны создаваться примерно такими


/project/test/list/54/2

тут цифра 54 раздел а 2 номер страницы


/project/test/list/54/2/title.desc

тоже самое только на конце title.desc указывает сортировку

хотя можно ещё так


/project/test/list/54/2/?sort=title.desc

как такое добиться подскажите плиз?

вроде бы всё просто, но работать не хочет…

да и ещё, тут test является контроллером, а list методом данного контролера


'test/list/<cat:\d+>/<page:\d+>'=>'test/list',

'test/list/<cat:\d+>/<sort>/<page:\d+>'=>'test/list',

'test/list/<cat:\d+>/<sort>'=>'test/list',

'test/list/<cat:\d+>'=>'test/list', 



во, вот так работает спасибо:)

ещё такой вопрос, что нужно ещё сделать чтобы другие параметры добавлялись к ссылкам, вдруг позже надумаю сделать фильтр по чему либо

даже можно чтобы параметры будущего фильтра подставлялись как ?filter1=x&filter2=x&filterN=n

вот сейчас поигрался, появились проблемы, если находится на странице


/test/list/1/

где 1 это номер раздела что в правилах описан <cat:\d+>

и нажать на ссылку сортировки


/test/list/1/create_date

после этого ссылки на постраничниках будут отсутствовать, как и писал выше.

этот метод работает если совсем не указывать раздел, тут проблем ни каких нет.

вообщем пока ломаю голову((

ну всё наконец то сделал, вот как нужно было


'test/list/<cat:\d+>/<page:\d+>/<sort>/*'=>'test/list',					 

'test/list/<cat:\d+>/<page:\d+>/*'=>'test/list',						 

'test/list/<cat:\d+>/<sort>/*'=>'test/list',

'test/list/<cat:\d+>/*'=>'test/list', 

при запросе


http://localhost/project/test/list/1/28/status.desc


cat: 1

page: 28

sort: status.desc

и вот ещё


http://localhost/project/test/list/1/29


cat: 1

page: 29

sort: 

вообщем то как мне было нужно. Кстати на конце указан /* в принципе оно и без этого справляется, но я рассчитывал что возможно можно будет дополнительные параметры указывать параметр=ключ, в друг понадобится некоторые фильтры включить. Попытался указать так

_http://localhost/project/test/list/1/29/?filter=123

или так

_http://localhost/project/test/list/1/29/filter/123

все ссылки в постраничнике и сортировке пропали тогда для чего предназначен знак /* или может я не так что-то делаю

    • обозначает любою количество любых символов…

вот-вот, так и думал, что если указать /* то все не учтённые параметры в данном случаи у меня учтённые только post, sort и cat а все остальные символы должны следовать за ними как параметр1/значение1/параметр2/значение2 и т.п.

сейчас так и работает с выше приведённым правилом и выставленным ‘useStrictParsing’=>true,

единственное что я заметил, сильно не обращал ещё внимание, неучтённые значения почемуто подставляются в УРЛ`е до учтёных параметров а не как должно быть в конце их

да и вот ещё, как я понимаю при выставлении urlFormat в path, ссылки подобные этому уже ни как не сделать?

_http://localhost/project/test/list/1/29/?filter=123

тоесть не учтённые параметры должны формироваться не ввиде директорий а ввиде параметров ?filter=123&filter2=123 и т.п.