I am using a form to submit filter parameters for a view. There are multiple filters that can be selected, and some filters are multi-selects.
However, I would prefer to use the post-redirect-view method, which means that I have to translate the post data to uri segments.
With this in mind, I was going to use the $this->uri->uri_to_assoc(n) method. However, I am not sure how to get this working if some of the parameters can have multiple values.
The only method I can think of is to join the values for each key with a unique character (say ‘—’), use $this->uri->uri_to_assoc(n) to parse each key-value pair, and then explode() each of the values (on ‘—’) again. Is this the best way to do it?
In addition, how do you get over the issue that one of the values may have a forward slash (’/’) in the name?
Example:
I have a multi-select (named categories[]) that is posted and used to filter parameters. The user select 2 values from this multiselect: ‘Jim/Bob’ and ‘Sarah’. Controller receives the post, $this->input->post('categories') gives me an array. I now want to redirect back to the same controller and use the values from $this->input->post('categories') as parameters in the uri. It would be something like /controller/method/categories/abc where abc are the categories selected.
where
In the end, I just manually created the query string using http_build_query($query_array) and parse_str($_SERVER[‘QUERY_STRING’], $get);