Skip to content

Yet Another alternative to GET

Derek Jones edited this page Jul 5, 2012 · 2 revisions

Hi I made a little improvement to the helper request builded in "Alternative to GET" and made a way to put multiples variables in a same GET segment. The url notation would be like this www.yoursite.com/index.php/class/function/value1/variable2:value2::variable3:value3::variableN:valueN

As yo see I used "::" to spread variables in the same uri segment, it even works to put a non predictable count of elements; i used it for example with the pagination library. This is the code of the new Request helper:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
/***

  • request_helper.php by EliuX([email protected]) **/ //Receive an array like key:value function getRequests($requests) { //get the default object $CI =& get_instance(); //declare an array of request and add basic page info $requestArray = array(); if($requests==array("")) //If there is nothing specified, finish it! return $requests; foreach ($requests as $request) { if(strrpos($request, ':') >0) { list($key,$value)=explode(':', $request); if(!empty($value) || $value='') $requestArray[$key]=$value; }else{ $requestArray[]="$request"; } } return $requestArray; }

    function multiRequests($params) { //get de root object $CI = & get_instance(); $duplesArray = array(); if(strrpos($params, '::') > 0) //If there is the variables separator, the spread it! { $duplesArray = explode('::',$params); return getRequests($duplesArray); //Each dupla will be spread too!
    }else{ //Si no hay mas de una variable return getRequests(array($params)); } }

?>

You have to call the funcion multiRequests and in its param the variable of the controller function you know has the multiples variables ":" separated. This is an example:

<? //Test controller

class Test extends Controller { function Test() { parent::Controller(); $this->load->helper("request");
}

//Testing the multiRequests function function testing($var1,$variables) { //I take the multiples variables specified in this controller variable segment $params = multiRequests($variables); echo "The variable 1 is $var1"; foreach($params as $param=>$value) echo "
Variable $param is ".$value; }

}

So an url like http://localhost/test/testing/value1/variable2:value2::variable3:value3::variable4:value4 will print:

The variable 1 is value1 Variable variable2 is value2 Variable variable3 is value3 Variable variable4 is value4

An request like http://localhost/cubel/test/testing/value1/variable2:value2 will print:

The variable 1 is value1 Variable variable2 is value2

and an url like http://localhost/cubel/test/testing/value1/variable2 will print:

The variable 1 is value1 Variable 0 is variable2

Look how at this final example it formated the sole variable in a simple array with initial index in 0.

I hope you'll find it usefull.

Let me know some doubts or suggestions at [email protected]. Good coding to yall!

Clone this wiki locally