-
normeno Newbie
![*](images/star.png)
-
Posts: 6
Threads: 3
Joined: Oct 2015
Reputation:
0
01-06-2016, 03:12 PM
(This post was last modified: 01-12-2016, 07:42 AM by normeno.
Edit Reason: solved
)
Hi community,
I'm trying to do a project in Codeigniter 3.x, but I have a question concerning the routes.
If I have the following structure
/application/controllers/Welcome.php
I can put the following in routes.php and have no problem
PHP Code: $ route ['default_controller'] = 'welcome';
The problem is that if I have the following structure
/application/controllers/admin/Welcome.php
I am not allowed to configure the routes so
PHP Code: $ route ['default_controller'] = 'admin/welcome';
There is the ability to set default controller in a subdirectory of controllers?
Thank you!
-
Narf Me
![*](images/star.png) ![*](images/star.png) ![*](images/star.png) ![*](images/star.png) ![*](images/star.png) ![*](images/star.png) ![*](images/star.png)
-
Posts: 1,589
Threads: 1
Joined: Oct 2014
Reputation:
121
-
Bhavesh Junior Member
![*](images/star.png) ![*](images/star.png)
-
Posts: 28
Threads: 4
Joined: Nov 2015
Reputation:
0
(01-06-2016, 05:08 PM)Narf Wrote: No, you can't do that.
You can like
/application/admin/[i]controllers/Welcome.php[/i]
and than set default
Am I right Narf?
-
wolfgang1983 Senior Member
![*](images/star.png) ![*](images/star.png) ![*](images/star.png) ![*](images/star.png)
-
Posts: 627
Threads: 271
Joined: Oct 2014
Reputation:
7
01-06-2016, 10:42 PM
(This post was last modified: 01-06-2016, 10:43 PM by wolfgang1983.)
(01-06-2016, 03:12 PM)normeno Wrote: Hi community,
I'm trying to do a project in Codeigniter 3.x, but I have a question concerning the routes.
If I have the following structure
/application/controllers/Welcome.php
I can put the following in routes.php and have no problem
PHP Code: $ route ['default_controller'] = 'welcome';
The problem is that if I have the following structure
/application/controllers/admin/Welcome.php
I am not allowed to configure the routes so
PHP Code: $ route ['default_controller'] = 'admin/welcome';
There is the ability to set default controller in a subdirectory of controllers?
Thank you!
I have asked this question my self before you need to create a MY_Router.php file in application / core
Default Controller In Sub Folder
PHP Code: <?php class MY_Router extends CI_Router { protected function _set_default_controller() { if (empty($this->default_controller)) { show_error('Unable to determine what should be displayed. A default route has not been specified in the routing file.'); } // Is the method being specified? if (sscanf($this->default_controller, '%[^/]/%s', $class, $method) !== 2) { $method = 'index'; } // This is what I added, checks if the class is a directory if( is_dir(APPPATH.'controllers/'.$class) ) { // Set the class as the directory $this->set_directory($class); // $method is the class $class = $method; // Re check for slash if method has been set if (sscanf($method, '%[^/]/%s', $class, $method) !== 2) { $method = 'index'; } } if ( ! file_exists(APPPATH.'controllers/'.$this->directory.ucfirst($class).'.php')) { // This will trigger 404 later return; } $this->set_class($class); $this->set_method($method); // Assign routed segments, index starting from 1 $this->uri->rsegments = array( 1 => $class, 2 => $method ); log_message('debug', 'No URI present. Default controller set.'); } }
There's only one rule - please don't tell anyone to go and read the manual. Sometimes the manual just SUCKS!
-
normeno Newbie
![*](images/star.png)
-
Posts: 6
Threads: 3
Joined: Oct 2015
Reputation:
0
wolfgang1983 thanks for your help, I will review the class you mention.
If this is not enabled by default for Codeigniter, what is the best way to separate environments? I was doing the following
/application/controllers/admin/
/application/controllers/frontend/
/application/controllers/webservice/
-
mr_pablo Junior Member
![*](images/star.png) ![*](images/star.png)
-
Posts: 49
Threads: 16
Joined: Feb 2015
Reputation:
0
I have a similar setup.
I have an "admin" sub-folder, and inside that, an index.php controller file that has an index method.
Then you just add additional routing
PHP Code: $route['admin'] = 'admin/index';
-
normeno Newbie
![*](images/star.png)
-
Posts: 6
Threads: 3
Joined: Oct 2015
Reputation:
0
this has worked for me!
(01-06-2016, 10:42 PM)wolfgang1983 Wrote: (01-06-2016, 03:12 PM)normeno Wrote: Hi community,
I'm trying to do a project in Codeigniter 3.x, but I have a question concerning the routes.
If I have the following structure
/application/controllers/Welcome.php
I can put the following in routes.php and have no problem
PHP Code: $ route ['default_controller'] = 'welcome';
The problem is that if I have the following structure
/application/controllers/admin/Welcome.php
I am not allowed to configure the routes so
PHP Code: $ route ['default_controller'] = 'admin/welcome';
There is the ability to set default controller in a subdirectory of controllers?
Thank you!
I have asked this question my self before you need to create a MY_Router.php file in application / core
Default Controller In Sub Folder
PHP Code: <?php class MY_Router extends CI_Router { protected function _set_default_controller() { if (empty($this->default_controller)) { show_error('Unable to determine what should be displayed. A default route has not been specified in the routing file.'); } // Is the method being specified? if (sscanf($this->default_controller, '%[^/]/%s', $class, $method) !== 2) { $method = 'index'; } // This is what I added, checks if the class is a directory if( is_dir(APPPATH.'controllers/'.$class) ) { // Set the class as the directory $this->set_directory($class); // $method is the class $class = $method; // Re check for slash if method has been set if (sscanf($method, '%[^/]/%s', $class, $method) !== 2) { $method = 'index'; } } if ( ! file_exists(APPPATH.'controllers/'.$this->directory.ucfirst($class).'.php')) { // This will trigger 404 later return; } $this->set_class($class); $this->set_method($method); // Assign routed segments, index starting from 1 $this->uri->rsegments = array( 1 => $class, 2 => $method ); log_message('debug', 'No URI present. Default controller set.'); } }
|