Search code examples
phpcodeignitercodeigniter-routing

CodeIgniter: adding parameters to URL


Started my first CI project and am just wondering how I handle URL parameters? I have a controller named 'city', and I've modified my mod_rewrite so localhost/codeigniter uses rewrite to localhost/codeigniter/city. What I want to do is add a city name onto the end of the URL and use get segment to query a table.

So my example would be localhost/codeigniter/edinburgh. I would grab the last segment and then create the sql query. However I think when I put edinburgh into the URL CI thinks I'm looking for a controller called 'edinburgh'.

Do I have to add routing in or something similar?


Solution

  • You can indeed use routing to do this.

    $route[':any'] = "controller/method";

    This will redirect EVERYTHING after your base url to the specified controller and method inside that controller. To get the url segments you can use the URI helper.

    $this->load->helper('url'); // load the helper first

    $city = $this->uri->segment(1);

    When accessing http://localhost/codeigniter/edinburgh the $city variable in above example would be edinburgh.

    Hope that helps!

    PS. You don't need mod_rewrite to specify a default controller. You can set it in your config.php under Routes. Specify city as your default controller and you can get rid of the mod_rewrite.