LazyPHP

Informar bugs e fazer sugestões

Voltar para o índice do fórum

Ver outros tópicos de 'Informar bugs e fazer sugestões'

Rotas Personalizadas (Sugestão de implentalçao)
Samuel S Gonçalves

4 anos atrás atrás - 11/05/2015

Implementei no lazy um esquema de rotas personalizadas, ou seja, posso definir que Controller e Métodos será responsável por uma url. Ex: url = meusite.com/contato , posso definir o IndexController e método contato() para ficarem responsável por está url. Segue o código lib/core/Route.php
<?php
class Route {
    private static $route = array();
    /**
     * Define controler e action com base em um rota   
     * @author Samue S Gonçalves <samuuel.gs@gmail.com>
     * <b>Exemplo: </b> Route::set('contato', 'index', 'contato');<br>
     * Quando acessada a aplicação/contato, o controler a ser
     * acessado é o IndexController é p método é o contato.
     * 
     * @param string $rota Nome da rota
     * @param string $controller Controler responsavel pela rora
     * @param string $action Método do controler responsável pela view e model
     */
    public static function set($rota, $controller, $action = 'index') {
        $rota = strtolower($rota);
        self::$route[$rota] = array($controller, $action);
    }
    public static function checkRoute($controller) {
        $rota = strtolower($controller);
        if (array_key_exists($rota, self::$route))
            return self::$route[$rota];
        else
            return FALSE;
    }
}
raiz/route.php
<?php
// Contato
Route::set('contato', 'index', 'contato');
Route::set('sobre', 'index', 'sobre');
Exemplo de rotas personalizadas para contato e sobre Ambos arquivos devem ser carregados no run(). Ainda no run() modifique o código
       if (isset($_GET['m'])) {
            $modulo = $_GET['m'];
            if (isset($_GET['p'])) {
                $action = $_GET['p'];
            }
        } else {
            $modulo = Config::get('indexController');
            $action = Config::get('indexAction');
            ;
        }
Pelo
        if (isset($_GET['m'])) {
            $route = Route::checkRoute($_GET['m']);
            // Verifica se existe rota
            if (is_array($route)) {
                $modulo = $route[0];
                $action = $route[1];
            } else {
                $modulo = $_GET['m'];
                if (isset($_GET['p'])) {
                    $action = $_GET['p'];
                }
            }
        } else {
            $modulo = Config::get('indexController');
            $action = Config::get('indexAction');
        }
Cada linha Route::set('nome_rota_personalizada', 'nome_controle', 'nome_metodo'); é uma rota personalizada. Espero ajudar vocês como me ajudou. Até mais.
Samuel S Gonçalves

4 anos atrás atrás - 11/05/2015

por favor corrigem o titulo rsrsr. implementação
Miguel

4 anos atrás atrás - 19/05/2015

Ficou muito bom, obrigado por compartilhar.
Samuel S Gonçalves

4 anos atrás atrás - 21/05/2015

Só uma obs: Este tópico não esta relacionado com o do link a seguir: http://lazyphp.com.br/Topico/view/id:133/Dados_do_templates/
Mauricio Guariero Dias

4 anos atrás atrás - 12/09/2015

Isso é muito útil, será que vai ter na proxima att. ?? `--`
Samuel S Gonçalves

4 anos atrás atrás - 01/11/2015

O miguel disse que ia sair na próxima att.

Voltar para o índice do fórum

Ver outros tópicos de 'Informar bugs e fazer sugestões'