Pois é, realmente o nome das classes de controller terão de ficar assim, mas como eu creio que raramente vou fazer chamadas a controllers não tem problema. Realmente ainda não ta otimizado, mas vou ir refinando isto com o tempo, perdi tempo demais tentando fazer o regex, tenho de acelerar aqui senão não vai ter como mostrar resultados.
Em 24 de abril de 2012 08:13, felipe bastos <[email protected]> escreveu: > Vixe .. isso tudo? > > Voce ja pensou no nome das classes? > > Controller_Diretorio1_Diretorio2_Diretorio3_DiretorioN_NomedoController > extends ... > > Achei seu algoritmo confuso ... > > Vc poderia dar um explode no uri .. e ir verificando se é diretorio > is_directory(). > > Quando nao for mais diretorio .. é controller, action, id (baseado no > padrão). > > De qualquer forma, Boa sorte! > Em 24/04/2012 07:55, "Douglas J.A.M" <[email protected]> escreveu: > >> Galera o pessoal do forum do kohana me ajudou, utilizei funções no route, >> há como: >> >> >> http://kohanaframework.org/3.2/guide/kohana/routing#lambdacallback-route-logic >> >> >> Filé demais esse framework viu! Dei um vardump ali só para debug caso >> desejem testar. >> >> Como meu código ficou: >> >> Route::set('default', function($url = '') { >> >> $directory = ''; >> $controller = 'inicio'; >> $action = 'index'; >> $id = ''; >> >> $partes = explode('/', $url); >> $i = sizeof($partes) - 1; >> >> // verifica se tem id >> if (is_numeric($partes[$i])) { >> $id = $partes[$i]; >> $i--; >> } >> >> // verifica se tem action >> if (in_array($partes[$i], array('index', 'ver', 'novo', >> 'editar', 'excluir'))) { >> $action = $partes[$i]; >> $i--; >> } >> >> if ($i >= 0) { >> // controller é o próximo >> $controller = $partes[$i]; >> $i--; >> } >> >> // o resto é o diretório >> while ($i >= 0) { >> $directory .= $partes[$i] . '/'; >> $i--; >> } >> >> // caso tenha remove a ultima barra do diretório >> if (strlen($directory) > 0) >> $directory = substr($directory, 0, -1); >> >> // verifico se na url veio só login, se sim, o controller é >> autenticacao >> // e a ação é login|logout >> if($controller == "login" || $controller == "logout"){ >> $action = $controller; >> $controller = "autenticacao"; >> } >> >> $retorno = array( >> 'directory' => $directory, >> 'controller' => $controller, >> 'action' => $action, >> 'id' => $id, >> ); >> >> echo var_dump($retorno); >> return $retorno; >> }); >> >> -- >> Você está recebendo esta mensagem porque se inscreveu no grupo "Kohana >> Php" dos Grupos do Google. >> Para ver esta discussão na web, acesse >> https://groups.google.com/d/msg/kohana-php/-/HPq_iZ2tVvcJ. >> Para postar neste grupo, envie um e-mail para [email protected] >> . >> Para cancelar a inscrição nesse grupo, envie um e-mail para >> [email protected]. >> Para obter mais opções, visite esse grupo em >> http://groups.google.com/group/kohana-php?hl=pt-BR. >> > -- > Você está recebendo esta mensagem porque se inscreveu no grupo "Kohana > Php" dos Grupos do Google. > Para postar neste grupo, envie um e-mail para [email protected]. > Para cancelar a inscrição nesse grupo, envie um e-mail para > [email protected]. > Para obter mais opções, visite esse grupo em > http://groups.google.com/group/kohana-php?hl=pt-BR. > -- Você está recebendo esta mensagem porque se inscreveu no grupo "Kohana Php" dos Grupos do Google. Para postar neste grupo, envie um e-mail para [email protected]. Para cancelar a inscrição nesse grupo, envie um e-mail para [email protected]. Para obter mais opções, visite esse grupo em http://groups.google.com/group/kohana-php?hl=pt-BR.
