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

route url
http://forum.kohanaframework.su/viewtopic.php?f=31&t=501
Страница 1 из 2

Автор:  lancecoder [ 16 дек 2012, 15:37 ]
Заголовок сообщения:  route url

добрый день, нуждаюсь в помощи, имею сайт на данном фрейме, роут стандартный, все по дефолту, создал модуль, в нем есть экшн
захожу по ссылке на него /modulename/myaction/1?p=2
Код:
public action_myaction($param){
var_dump($param); //NULL
var_dump($_GET); //array('p'=>'2');
}

nginx+fastCGI (все вертится на поддомене 4 уровня aaa.bbb.cccc.pro)
прошу меня простить в кохане новичок, прочитал только уроки на данном сайте, вопросов по работе не имею, интересует что может повлиять на такие действия (может проверка на домен или еще чего) почему роут не обрабатывается верно, согласно правил

Автор:  Zorato [ 16 дек 2012, 15:40 ]
Заголовок сообщения:  Re: route url

Попробуйте заходить по ссылке /controllername/actionname/1?p=2

Автор:  lancecoder [ 16 дек 2012, 15:43 ]
Заголовок сообщения:  Re: route url

прошу прощение за мою невнимательность, конечно же не модульнейм а контроллернейм я захожу (yiiшная привычка)

Автор:  lancecoder [ 16 дек 2012, 15:46 ]
Заголовок сообщения:  Re: route url

есть модуль membership
в нем контроллер member
в нем action delete_identity
url: http://project.dev.site.pro/member/dele ... O4bxvNfb1N
реально выглядит картинка вот так
Код:
/**
    * Delete a member's identity
    * @param int ID of identity to delete
    */
   public function action_delete_identity($identity)
   {
        var_export($identity); //NULL
   }

Автор:  Zorato [ 16 дек 2012, 21:29 ]
Заголовок сообщения:  Re: route url

В роуте
Код:
Route::set('default', '(<controller>(/<action>(/<id>)))')
   ->defaults(array(
      'controller' => 'search',
      'action'     => 'index',
   ));

можно указать reg exp, по которому будет подбираться controller, action, id и т.п. Например:
Код:
Route::set('id', '<controller>/<id>',array('controller'=>'[a-z]+','id'=>'[0-9]+'))
   ->defaults(array(
      'action'     => 'index',
   ));

т.е. если после controllername/ будут какие-то буквы, то данный роут не сработает - на месте id ожидается число.
Проверьте, возможно надо добавить что-то вроде
Код:
'action'=>'[a-z_]+'

Плюс, советую поставить вот эту замечательную штуку
Очень помогает в отладке приложений, есть спец вкладка routes, в которой видно какой роут сработал. ИМХО, оч удобно.

Автор:  qed [ 17 дек 2012, 02:53 ]
Заголовок сообщения:  Re: route url

В параметры action-а id передаваться не будет, его получить можно так:
Код:
$this->request->param('id');

Автор:  lancecoder [ 17 дек 2012, 12:33 ]
Заголовок сообщения:  Re: route url

qed писал(а):
В параметры action-а id передаваться не будет, его получить можно так:
Код:
$this->request->param('id');

именно :lol: сам нашел уже, всем спасибо, но почему не работает передача переменных в экшн остается вопросом, пхп 5,3,с копейками

Автор:  Zorato [ 18 дек 2012, 03:26 ]
Заголовок сообщения:  Re: route url

lancecoder писал(а):
почему не работает передача переменных в экшн остается вопросом

Какая именно передача переменных?
Не помню с какой точно версии (кажется 3.2) больше нельзя передавать данные в экшн в качестве аргументов:
Код:
public function index_action($id){ // так не прокатит
$this->request->param('id'); // теперь работает только так

Автор:  lancecoder [ 18 дек 2012, 17:24 ]
Заголовок сообщения:  Re: route url

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

Автор:  Zorato [ 19 дек 2012, 00:47 ]
Заголовок сообщения:  Re: route url

lancecoder писал(а):
а с чем связанно, наоборот же удобнее, сразу проверка на нот нулл

С чем конкретно связано не скажу(можно посмотреть в комментах к коммиту на офф репозитории фрэйма), но, default значение также можно задать - просто передать его 2м аргументом:
Код:
$this->request->param('id',0);

Если id нет, то вернется 0, если вы это имели ввиду.

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