-
Notifications
You must be signed in to change notification settings - Fork 0
Yet Another alternative to GET
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.
Let me know some doubts or suggestions at [email protected]. Good coding to yall!