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

route неработает
http://forum.kohanaframework.su/viewtopic.php?f=31&t=775
Страница 1 из 1

Автор:  rastamanuz [ 30 ноя 2013, 03:59 ]
Заголовок сообщения:  route неработает

Здравствуйте!
у меня проблема, не могу настроить роуты.
Код:

Route
::set('main','<action>',array(
    'action' => '(main)',
    ))
    ->defaults(array(
        'controller' => 'main',
        'action'     => 'reg',
    ));
 
Route
::set('default', '(<controller>(/<action>(/<id>)))')
    ->defaults(array(
        'controller' => 'welcome',
        'action'     => 'index',
    )); 

я пробовал по всякому :
Код:
Route::set('main','main')
    ->
defaults(array(
        
'controller' => 'main',
        
'action'     => 'reg',
    ));
Route::set('main','<action>',array(
         
'action' => 'main'
       
))
    ->
defaults(array(
        
'controller' => 'main',
        
'action'     => 'reg',
    )); 

и еще всяких других вариантов. Только работает 127.0.0.1/kohana/ то есть по умолчанию, а другие 127.0.0.1/kohana/main
ни в какую. что делать? что не так? всю ночь просидел :( .
\kohana\application\classes\Controller\Main.php
Код:
<?php defined('SYSPATH') or die('No direct script access.');


class Controller_Main extends Controller {

    
    public function action_reg
()
    {
       $form="main";        
       $this
->response->body($form);    
    
}

}
 
 

версия коханы 3.3.1
я как то раньше пользовался коханой, проблем таких небыло.
итог, я вообще не могу никакой роут запустить, кроме дефолтного.
спасибо за внимание!

Автор:  Sergey [ 30 ноя 2013, 07:22 ]
Заголовок сообщения:  Re: route неработает

В чём собственно проблема не совсем понятно.
Сервер настроен правильно? Используете Apache? Если да, то mod_rewite включён?

Что указано в: ?
Код:
Kohana::init(array('base_url'   => '/')); 


В .htaccess прописано то, что нужно?

Если указать до роута который зовётся default вот этот
Код:

    Route
::set('main', 'main(/<action>)', array(
        'action'  => 'reg|list'
    ))
    ->defaults(array(
        'controller' => 'mycontroller',
        'action'  => 'reg',
    ));
 


По идее, должно отрабатывать по адресу http://ваш_сайт/main или например http://ваш_сайт/main/list
В первом варианте должен быть контролёр mycontroller а в нём action_reg, в втором варианте action_list. Объяснять почему именно так не нужно? Это понятно? Кстати, на заметку, имена роутов можно использовать со слешами. Это удобно, например для обозначения структуры сайта: route/name/1, admin/dashboard/posts, frontend/blogs.

Ещё одно замечание. В примере, который я указал выше, можно писать так  'action'  => 'reg|list' а можно так  'action'  => ('reg|list'). Разница только в одном, скобки нужны для группировки регулярного выражения. Вы используете регулярное выражение? Нет? Тогда не используйте скобки. Оно будет работать и так и эдак. Но зачем лишний код?

Иногда бываю проблемы с роутами при такой ситуации:
Код:
Route::set('route/name/1', 'main1')->defaults(array());
Route::set('route/name/2', 'main2')->defaults(array());
Route::set('route/name/3', 'main3')->defaults(array()); // Предположим тут ошибка
Route::set('route/name/4', 'main4')->defaults(array());
Route::set('route/name/5', 'main5')->defaults(array());
Route::set('route/name/6', 'main6')->defaults(array());
Route::set('route/name/7', 'main7')->defaults(array()); 


Если при написании route/name/3 вы допустили ошибку, роуты которые ниже, работать тоже не будут.
По крайней мере я встречал такие ситуации.

По этому, когда вы тестируете ваш пример, попробуйте отключить все остальные роуты и все модули имеющие свои роуты.

Автор:  rastamanuz [ 30 ноя 2013, 18:48 ]
Заголовок сообщения:  Re: route неработает

Спасибо попробую.

Автор:  rastamanuz [ 30 ноя 2013, 20:18 ]
Заголовок сообщения:  Re: route неработает

да точно в mod_rewrite было дело. спасибо

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