Welcome Guest, Not a member yet? Register   Sign In
CodeIgniter 2 and segment-based URLs with query strings
#1

[eluser]Prophet[/eluser]
Hi all. I was a little frustrated to find that the old
Code:
$config['uri_protocol']    = "PATH_INFO";
$config['enable_query_strings'] = TRUE;
trick doesn't work in CI2. The reason being that Config:Confusedite_url() has been improved since CI1 and takes your query string configuration into account.

Using this configuration in CI2 will give you URLs like www.example.com/?/ and www.example.com/?controller/method which I don't think is ideal.

I came up with a really simple fix. I don't know if it's the right thing to do, but it makes sense to me. In system/core/Config.php, change line 221 from:
Code:
if ($this->item('enable_query_strings') == FALSE)
to:
Code:
if ($this->item('enable_query_strings') == FALSE OR $this->item('uri_protocol') == 'PATH_INFO')

I recommend creating application/core/MY_Config.php and overriding the site_url() method to avoid overwriting your changes when you pull the latest CI2 source in.
#2

[eluser]Dennis Rasmussen[/eluser]
Or you could just hook pre-system and save the querystring before _GET gets destroyed and then recreate _GET pre-controller Smile
All done in a hook file which will work with any version and subversion.
#3

[eluser]Prophet[/eluser]
[quote author="Dennis Rasmussen" date="1289229330"]Or you could just hook pre-system and save the querystring before _GET gets destroyed and then recreate _GET pre-controller Smile
All done in a hook file which will work with any version and subversion.[/quote]
I find hooks to be messy and prefer extending/modifying the core classes. Good to know that method exists though - thanks Smile
#4

[eluser]amosmos[/eluser]
don't forget to join us on this request:

http://ellislab.com/forums/viewthread/165822/

It's a really important fix and should be an easy one for ellislabs. just separate the config option to two: 1. allow\disallow query strings (which IMHO should be default to allow) and 2. use query strings for uri routing instead of the default segments method.

thanks,
amos




Theme © iAndrew 2016 - Forum software by © MyBB