19 October 2007 at 7:52am
At the moment I'm having trouble with a big searchform on my website.
The searchform is located at: http://www.emp-ex.nl/uitgebreid-zoeken
The problem is that once all the checkboxes are checked silverstripe will generate a url with more then 2083 characters in it and IE will not display the results. I've tried changing the form-method to POST, but when I do this the pagenumbers don't work anymore.
Is there a way to get the pagenumbers working with the post-method?
Should I rename all the checkboxes for creating a shorter URL? When I do this I have to rebuild all the queries written for the search.
21 October 2007 at 5:23am
21 October 2007 at 2:44pm
aah, right - didn't click on submit ;)
the problem is that DataObjectSet->Pages() just appends the "start"-GET-parameter to any existing get-parameter (this is why your search-options are retained on subsequent pages).
this logic doesn't work with POST-data (or as you noted, URLs longer than ~2000 chars).
there is no easy way around this - i'd recommend to store all search-parameters in a php-session, and give a unique hash back to the URL.
in your page-controller's init(), you could check for an existing hash-parameter, and populate the $_POST-array from the session-data belonging to the hash. this is a bit hacky, but easier that to properly customize SearchForm and DataObjectSet :)