KOHANA 3 - Como faço para que a rota padrão passe argumentos para a ação do controlador?

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

  •  26-09-2019
  •  | 
  •  

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;
    }
}
Foi útil?

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
scroll top