KOHANA 3 - Como faço para que a rota padrão passe argumentos para a ação do controlador?
Pergunta
Minha ação do controlador requer um parâmetro, mas não consigo fazer com que o roteador do KO3 passe este parâmetro na rota padrão. Esse tipo de coisa funciona com outras rotas. Aqui está um exemplo para esclarecer ...
Em bootstrap.php ...
Route::set('default', '(<controller>(/<action>(/<the_required_param>)))')
->defaults(array(
'controller' => 'DefaultController',
'action' => 'index',
'the_required_param' => 'some_default_value',
));
No arquivo do controlador ...
class Controller_DefaultController extends Controller
{
public function action_index($the_required_param)
{
echo 'value: ' . $the_required_param;
}
}
Solução
Outra maneira de obter o param especificado seria:
$this->request->param('the_required_param');
Você também deve garantir que você defina suas rotas em ordem e ela corresponda ao que deveria.
Outras dicas
O problema estava sendo causado por uma rota gananciosa (corresponderia a qualquer URI), para que o roteador nunca atingisse a rota padrão. Abaixo está um exemplo para referência ...
// 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',
));
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow