Как указать в роутинге что id может содержать буквы но должно обязательно заканчиваться на цифру?

Нужно что бы работали следующие пути
forum/forum-name.9 -> controller = forum, action = index, id = forum-name.9
forum/forum-name.9/edit -> controller = forum, action = edit, id = forum-name.9
forum/rules -> controller = forum, action = rules, id = null

Пробую так
Route::set('default', '(/<controller>)((/<id>)(/<action>)))', 
     array(
        'controller' => '[a-zA-Z_-]+',
	'action' => '[a-zA-Z_-]+',
	'id' => '[a-zA-Zа-я0-9.-]+',
))
    ->defaults(array(
        'controller' => 'forum',
        'action' => 'index',
        'id'=>null
  ));


Но понятное дело не работает как надо
  • Вопрос задан
  • 3047 просмотров
Решения вопроса 1
JetMaster
@JetMaster Автор вопроса
А ещё лучше сделать так
Route::set('default', '(/<controller>)((/(<name>.)<id>)(/<action>)))', 
     array(
        'controller' => '[a-zA-Z_]+',
        'action' => '[a-zA-Z_]+',
        'name' => '[a-zA-Zа-я0-9-]+',
        'id' => '\d+',

))
    ->defaults(array(
        'controller' => 'forum',
        'action' => 'index',
        'name'=>null,
        'id'=>0
  ));
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
DeVitoz
@DeVitoz
Через регулярку /^\w+\d+$/ Это правда синтаксис для js, не знаю как в php. Если что, сама регулярка между слешами /<тут>/ :--)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы