17487 Posts in 4473 Topics by 1978 members
|Go to End|
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.
Does anybody know a solution for my problem?
Thanks in advance!
19 October 2007 at 2:15pm
POST is the way to go here i guess. which "pagenumbers" are you referring to?
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
23 October 2007 at 9:53am
Thanks for the support.
It worked out the way you said!
|Go to Top|