Русскоязычный форум, посвященный фреймворку Kohana
http://forum.kohanaframework.su/

Помогите с роут
http://forum.kohanaframework.su/viewtopic.php?f=31&t=180
Страница 1 из 3

Автор:  dimaua2 [ 09 май 2012, 16:51 ]
Заголовок сообщения:  Помогите с роут

Route::set('public', 'public/shownode/$node_id/$teacher_id(/page<id>)(.html)')
->defaults(array(
'controller' => 'public',
'action' => 'shownode',
));


такой роут работать будет?

Автор:  admin [ 09 май 2012, 20:58 ]
Заголовок сообщения:  Re: Помогите с роут

Нет.

Автор:  dimaua2 [ 09 май 2012, 21:51 ]
Заголовок сообщения:  Re: Помогите с роут

а как тогда прсото за построение ссылки отвечает вот такой контроллер
Код:
   public function action_shownode()
   {
      $node_id    = $this->request->param('id', NULL);
      $teacher_id = $this->request->param('id2', NULL);
      
      $data = array();
      
      $material = ORM::factory('material');
      $cat = new Model_Category;
      
      $data['path'] = $cat->getPath($node_id);
      $data['materials'] = $material->getMaterialsByTeacher('', $teacher_id, $node_id);
      $data['teachername'] = ORM::factory('user', $teacher_id)->name;

      $this->tpl->content = View::factory('materials/shownode', $data);
   }


ссылка получается вида
материал/шоуноде/число/число.штмл

я так понял числа это вот это

$node_id = $this->request->param('id', NULL);
$teacher_id = $this->request->param('id2', NULL);

как тогда сделать правильной роут?

Автор:  admin [ 10 май 2012, 02:59 ]
Заголовок сообщения:  Re: Помогите с роут

Вместо переменных поставить регулярные выражения.
http://kohanaframework.su/advanced/route_p2

Автор:  dimaua2 [ 11 май 2012, 21:28 ]
Заголовок сообщения:  Re: Помогите с роут

Route::set('public', 'public/shownode(/<id>)(/<id2>)(/page<id>)(.html)')
->defaults(array(
'controller' => 'public',
'action' => 'shownode',
));

вот так?

Автор:  admin [ 13 май 2012, 15:58 ]
Заголовок сообщения:  Re: Помогите с роут

Нет. Третьим параметром передать массив, где с помощью регулярных выражений нужно указать то, что вам надо. Например, если надо, чтобы id было числом, пишем третьим параметром
Код:
, array('id' => '[0-9]+')

Ссылку на урок я дал. Там про это написано с примерами.

Автор:  dimaua2 [ 13 май 2012, 16:41 ]
Заголовок сообщения:  Re: Помогите с роут

Route::set('public', 'public/shownode(/<id>)(/<id2>), array('id' => '[0-9]+')(/page<id>)(.html)')
->defaults(array(
'controller' => 'public',
'action' => 'shownode',
));

хм..выходит вот так..
но пока ошибка..

Автор:  dimaua2 [ 13 май 2012, 17:01 ]
Заголовок сообщения:  Re: Помогите с роут

Route::set('public', 'public/shownode(/<id>), array('id' => '[0-9]+') (/<id2>), array('id2' => '[0-9]+')(/page<id>)(.html)')
->defaults(array(
'controller' => 'public',
'action' => 'shownode',
));

(( все равно синтаксическая ошибка..

Автор:  dimaua2 [ 17 май 2012, 23:32 ]
Заголовок сообщения:  Re: Помогите с роут

ап темы..проблема не решена(

Автор:  admin [ 18 май 2012, 00:24 ]
Заголовок сообщения:  Re: Помогите с роут

материал/шоуноде/число/число.штмл

Что-то вроде
Код:
Route::set('public', 'public/shownode/<id>/<id1>.html', array('id' => '[0-9]+'), array('id1' => '[0-9]+'))
 ->defaults(array(
 'controller' => 'public',
 'action' => 'shownode',
 ));


Если я правильно понял задачу.

Страница 1 из 3 Часовой пояс: UTC + 4 часа [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/