Pergunta

Eu tenho um método no meu controlador de usuários semelhante a:

function members($type = null, $category = null) { ... }

Ambos os parâmetros são opcionais e podem ser usados ​​juntos ou sozinhos.

Então, com a seguinte rota.

Router::connect('/members/*', array('controller' => 'users', 'action' => 'members'));

http://example.com/users/members torna-se com sucesso http://example.com/members.

Infelizmente o seguinte não funciona

http://example.com/members/type:cat
http://example.com/members/category:dog
http://example.com/members/type:cat/category:dog

como eu poderia configurar minhas rotas para que todas funcionassem corretamente?

Foi útil?

Solução

Os parâmetros nomeados não são mapeados automaticamente para a ação.Você pode obtê-los ligando para

$this->passedArgs['type'] ou $this->passedArgs['category']

ou usando o terceiro parâmetro em Router::connect:

Router::connect(
    '/members/*',
    array('controller' => 'users', 'action' => 'members'),
    array(
        'pass' => array('type', 'category')
    )
);

http://book.cakephp.org/view/46/Routes-Configuration

Outras dicas

Experimente com

Router::connect('/members/type\:(.*)', array('controller' => 'users', 'action' => 'members_type'));
Router::connect('/members/category\:(.*)', array('controller' => 'users', 'action' => 'members_category'));
Router::connect('/members/type\:(.*)/category:(.*)', array('controller' => 'users', 'action' => 'members_type'));

Observe que não testei, mas acho que você deve escapar dos dois pontos.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top