Posso rotas de instalação no Kohana para corresponder apenas determinados métodos HTTP (GET / POST / etc)
Pergunta
Estou explorando alguns frameworks PHP e a pioneira atual é Kohana.
Ter um fundo Rails eu me tornei usado para que os trilhos chamadas da comunidade rotas "RESTful". Assim, um "ficar / posts" exibe todos os posts e é tratado pelo método do índice do controlador de Mensagens. A "POST / posts" cria um novo objeto de pós e é tratado por um método diferente do controlador de mensagens.
Uma vez que o caminho em ambas as 2 pedidos é idêntico, as necessidades do roteador para tomar decisões com base no método HTTP.
É o roteador em Kohana capaz de fazer isso?
Solução
Kohana não suporta rotas RESTful por padrão, mas há um RESTful módulo que adiciona suporte para ele. Veja a RESTful wiki para uso.
Kohana v3.x suportes controladores RESTful diretamente. Apenas estender Controller_REST
vez de Controller
e toda a ação rota será o método de solicitação. (A pedido POST
seriam direcionados para action_post
, etc.)
Outras dicas
Você também pode adicionar estas linhas ao seu controlador é antes () método:
if ($this->request->method() == "POST")
{
$this->request->action("post_".$this->request->action());
}
Portanto, obter / controller / mensagens serão tratadas pelas action_posts () no seu controlador, enquanto o POST / controller / mensagens serão tratadas pelas action_post_posts () método.
PS: O embutido Controller_REST foi removido em Kohana 3.2
Verificar o método HTTP no construtor da classe se sente como design pobre para mim. Como Rails, Kohana 3.3 pode criar rotas RESTful no router (onde eles pertencem).
Confira a documentação para Kohana 3.3 Route Filtros .
Aqui está um exemplo:
Route::set('Posts', 'posts/<id>', array('id' => '\d+'))
->filter(function($route, $params, $request) {
$params['action'] = strtolower($request->method());
return $params;
})
->defaults(array(
'controller' => 'Post',
));