2016-08-18 4 views
0

Что я хочуYii 2. Различные действия в зависимости от переданных аргументов

Я хочу называть различные действия по таким URL-

abc.com/ — Home page 

abc.com/<argument-1>/<argument-2> — Search page 

Что я

Вот мой web.php Конфигурация маршрута и поиск с помощью указателей.

'urlManager' => [ 
      'enablePrettyUrl'  => true, 
      'showScriptName'  => false, 
      'enableStrictParsing' => false, 
      'rules'    => [ 
       //Home page 
       '/' => 'site/index', 
       //Search 
       '<tag>/<location>' => 'site/search', 
      ], 
     ], 

И abc.com/ я получаю бесконечный цикл.

Индекс действия

/** 
    * Displays homepage. 
    * 
    * @return string 
    */ 
    public function actionIndex() 
    { 
     return $this->render('index', ['ip-info' => Locator::getLocation()]); 
    } 

Поиск действие

public function actionSearch(
    array $tag = ['any'], 
    array $location = ['any'], 
    $display = 'list', 
    $sort = 'name' 
) { 

    //... 
    //some actions to fill the variables. 
    //... 

    return $this->render('search', [ 
     'data'   => $data, 
     'display-type' => $display, 
     'sidebar'  => $sidebar, 
     'countries' => $location, 
     'sort'   => $sort, 
     'title'  => $title, 
    ]); 
} 
+0

Можете ли вы опубликовать информацию о вашем действии – g9m29

+0

какой код написан в указателе? пожалуйста, проверьте, что слишком –

+0

что произойдет, если вы удалите/из abc.com/ попробуйте просто abc.com и проверьте представление тоже. i.e. index есть ли код перенаправления? –

ответ

0

Проблема была в сочетании обстоятельств. AJAX генерирует неверный запрос маршрута, а ближайший catch обеспечивает цикл. Вот пример рабочих правил.

'urlManager' => [ 
      'baseUrl' => '/', 

      'enablePrettyUrl'  => true, 
      'showScriptName'  => false, 
      'enableStrictParsing' => true, 
      'rules' => [ 
       //Home page 
       '/'     => 'site/index', 

       //AJAX 
       'ajax/<action:\w+>' => 'ajax/<action>', 


       //Search 
       '<tag:\w+>/<location:\w+>' => 'site/search', 

      ], 

     ], 
Смежные вопросы