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

Роутинг
http://forum.kohanaframework.su/viewtopic.php?f=32&t=198
Страница 1 из 1

Автор:  Darth_Vaider [ 24 май 2012, 21:13 ]
Заголовок сообщения:  Роутинг

Перевёл сайт на кохану. Требуется сделать так, чтобы все старые ссылки были рабочими. То есть надо научить кохану преобразовывать адреса вида
    pages.php?c=4
в
    /pages/page/4
Пытался сделать так:
Код:
Route::set('oldpages', 'pages/4')
  ->defaults(array(
    'controller' => 'pages',
    'action'     => 'page',
    'id'         => '4',
   ));

но получаю ошибку 404.
(в данный момент мне важно преобразовать именно эту страницу, поэтому необязательно указывать правило роутинга для всех страниц)

Автор:  ivank_x [ 24 май 2012, 21:48 ]
Заголовок сообщения:  Re: Роутинг

Код:
Route::set('oldpages', 'pages/<page>/<id>', array('id' => '[0-9]+'))
   ->defaults(array(
      'controller' => 'pages',
      'action' => 'page',
   ));

Автор:  eBasher [ 24 май 2012, 23:44 ]
Заголовок сообщения:  Re: Роутинг

В каком смысле преобразовать ?
Перейдя по pages.php?c=4 вы не попадете на /pages/page/4
Движок надо переделать сначала.

Автор:  Darth_Vaider [ 25 май 2012, 10:12 ]
Заголовок сообщения:  Re: Роутинг

ivank_x: всё равно страница не найдена.

Автор:  ivank_x [ 25 май 2012, 15:25 ]
Заголовок сообщения:  Re: Роутинг

Так а у Вас есть контроллер pages, и экшен page?

Автор:  Darth_Vaider [ 25 май 2012, 20:18 ]
Заголовок сообщения:  Re: Роутинг

Цитата:
Так а у Вас есть контроллер pages, и экшен page?

Да. Этот экшен отображает страницы.

Автор:  Sergey [ 29 июл 2012, 07:32 ]
Заголовок сообщения:  Re: Роутинг

eBasher писал(а):
В каком смысле преобразовать ?
Перейдя по pages.php?c=4 вы не попадете на /pages/page/4
Движок надо переделать сначала.


Не движок переделывать, а всего лишь правило в .htaccess написать и mod_rewrite подключить :3

Автор:  Sergey [ 29 июл 2012, 07:49 ]
Заголовок сообщения:  Re: Роутинг

Darth_Vaider писал(а):
То есть надо научить кохану преобразовывать адреса вида
    pages.php?c=4
в
    /pages/page/4


Маршрутизация:
Код:
Route::set('oldpages', '<page>', array('page' => 'pages\.php\?c=\d+'))
  ->defaults(array(
    'controller' => 'pages',
    'action'     => 'page'
   ));

Route::set('newpages', '<controller>/<action>/<id>', array('id' => '\d+'))
  ->defaults(array(
    'controller' => 'pages',
    'action'     => 'page'
   ));


Контролер:
Код:
class Controller_Pages extends Controller_Template {
  public function action_page()
  {
    $page = $this->request->param('page') ? $this->request->param('page') : $this->request->param('id');

    $content = View::factory('/pages/show')
                   ->bind('page', $page);
    $this->template->content = $content;
  }
}


Вид:
Код:
<?php
  echo 'Вы находитесь на странице ' . $page;

Автор:  eBasher [ 31 июл 2012, 19:29 ]
Заголовок сообщения:  Re: Роутинг

А если нужно будет использовать адрес вида
/pages/page/4?param=price
будет работать ?

Автор:  mamahtehok [ 01 авг 2012, 00:52 ]
Заголовок сообщения:  Re: Роутинг

судя по всему нет.
для подобного подойдет что-то подобное

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