How to change parameter of a function in url with Codeigniter

0

I would like to know if you have the possibility to change a parameter of the url with codeigniter. I have a created function called edit and in it I pass the client id to be edited, but instead of the id that is the parameter, I would like the client name to be shown, is there a possibility?

Follow code for analysis:

public function editar($id)
{   
        $data                = array();
        $data['NOMECLIENTE'] = '';
        $data['IDCLIENTE']   = '';

    $cliente = $this->ClienteM->get(array('id_cliente' => $id), TRUE);

    if ($cliente) {
        $data['IDCLIENTE']   = $cliente->id_cliente;
        $data['NOMECLIENTE'] = $cliente->nome_cliente;
    } 

    setURL($data,'cliente');

    $this->parser->parse('painel/cliente_form', $data);
}
    
asked by anonymous 29.12.2016 / 14:19

1 answer

0

You can do what you ask: access the URL entered an ID but be redirected to another that contains the client's name in the URL (I do not understand the advantage of this). What is not possible is to directly access the URL that only contains the client name (imagine the case of 2 clients with the same name, which would be accessed? You need to identify them by the ID).

What happens is that you will be directed to another method of the control that will neglect the second parameter, the name of the client. In a very fast and ugly way, when you get the $ id URL parameter, you get the name data, and pass it on to a second method, which will only use $ id, as the first, but will also show the name in the URL.

So:

public function editar($id) {   
    // Esse 1° método não faz nada, só obtem o nome do cliente e redireciona
    // para o método editar2 (que contém o nome do cliente na URL)
    // e ele sim faz o que precisa fazer
    $id = intval($id); // Sanitize sempre
    $cliente = $this->ClienteM->get(array('id_cliente' => $id), TRUE);

    if ($cliente){
        // Coloquei __CLASS__ aqui por que não sei qual é o nome da classe
        redirect(__CLASS__.'/editar2/'.$id.'/'.$cliente->nome_cliente);    
    } 
    else {
        // Cliente não localizado, tratar...
    }   
}

public function editar2($id, $nome_cliente) {
    // Aqui faz o serviço de verdade, mas agora está exibindo
    // o nome do cliente na URL

    // AQUI ESTÁ A IMPLEMENTAÇÃO VERDADEIRA DO MÉTODO...
}
    
10.07.2017 / 17:53