I have the following structure for my application:
myapp/index.php: index page
myapp/mycont/myfunc/productID: dedicated page for product
index.php
has links that open up myapp/mycont/myfunc/productID
Hence, the controller functions are defined as:
index() {...}
myfunc($id) {...}
As, both my functions are almost same I wanted to remove the myfunc()
function and change the URLs as:
myapp/: index page
myapp/productID: dedicated page for product
Both the above URLs should use index()
function, but the index function throws error if I try to pass parameters to it.
Pass parameter to index function in CI:
1) You need the index
segment http://www.example.com/search/index/search-keyword
.
2) Or you need to use a route $route['search/(:any)'] = 'search/index/$1';
3) Or try remap: https://ellislab.com/codeigniter/user-guide/general/controllers.html#remapping
Edit (sample):
$route['abc/campaigns/add_webengage_feedback_leads'] = "abc/campaigns/add_webengage_feedback_leads";
$route['abc/campaigns/add_webengage_survey_leads'] = "abc/campaigns/add_webengage_survey_leads";
$route['abc/campaigns/add_canvass_data'] = "abc/campaigns/add_canvass_data";
$route['abc/campaigns/add_connecto_data'] = "abc/campaigns/add_connecto_data";
$route['abc/campaigns/(:any)'] = "abc/campaigns/index/$1";
Note: The URL mapping to the index
function should be last.
Assuming that you have removed the index.php
from your URL
, you can go by this flow,
function index(){
if( $this->uri->segment(3) ){ //if an product id is set
$id = $this->uri->segment(3); //this is the product id in third segment of URL
}else{ //display the normal index page
}
}