Кохана 3 - Как сделать аргументы маршрута по умолчанию для действия контроллера?

StackOverflow https://stackoverflow.com/questions/2829633

  •  26-09-2019
  •  | 
  •  

Вопрос

Действие моего контроллера требует параметра, но я не могу получить маршрутизатор KO3 для передачи этого параметра в маршруте по умолчанию. Такая вещь работает с другими маршрутами. Вот пример уточнить ...

В bootstrap.php ...

Route::set('default', '(<controller>(/<action>(/<the_required_param>)))')
 ->defaults(array(
  'controller' => 'DefaultController',
  'action'     => 'index',
  'the_required_param' => 'some_default_value',
 ));

В файле контроллера ...

class Controller_DefaultController extends Controller
{
    public function action_index($the_required_param)
    {
        echo 'value: ' . $the_required_param;
    }
}
Это было полезно?

Решение

Еще один способ получить указанный параметр:

$this->request->param('the_required_param');

Вы также должны убедиться, что вы определите свои маршруты в порядке и убедитесь, что он соответствует тому, что он должен.

Другие советы

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

// The parenthesis caused this route to match any uri
Route::set('route-4-params', '(<controller>/<action>/<p1>/<p2>/<p3>/<p4>)');

Route::set('default', '(<controller>(/<action>))')
    ->defaults(array(
        'controller' => 'default_controller',
        'action'     => 'index',
        'the_required_param'     => 'somevalue',
    ));
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top