dozoqn3347 2018-11-23 08:04
浏览 55

如何在控制器中调用子目录?

I am using CodeIgniter and my folder structure is like below.

Controller

controllers
-admin
     --Access_controller
     --more
-website
     --Website_controller
     --more

Model

Model
-admin
   --Access_model
   --more here
-website
   --Website_model
   --more here

view

view
 -admin
    --login.php
    --changepassword.php
    --more here
 -website
    -- home.php
    -- about.php
    -- contactus.php

Now I have to access the controller but it's not working. I checked every post on SO and found the answer like. I have to add code on routes.php file.

I tried

1)  $config['admin'] = 'admin/Access_controller';
    $route['default_controller'] = 'website/Website_controller';


2) $config['admin/Access_controller'] = 'admin';              
   $config['default_controller'] = 'website/Website_controller'; 

3) $route['default_controller'] = 'website/Website_controller';

   $route['admin/(:any)'] = "admin/$1";

4) Also, I created a file My_Route.php in application->core and added code but this code is working only for default_controller.

<?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.');
    }
}

I tried all the solution But still, I am getting the error object not found.

Another solution to this issue would be a great help for me?

I don't know what I missed in this. Would you help me out on this issue?

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 ogg dd trandata 报错
    • ¥15 高缺失率数据如何选择填充方式
    • ¥50 potsgresql15备份问题
    • ¥15 Mac系统vs code使用phpstudy如何配置debug来调试php
    • ¥15 目前主流的音乐软件,像网易云音乐,QQ音乐他们的前端和后台部分是用的什么技术实现的?求解!
    • ¥60 pb数据库修改与连接
    • ¥15 spss统计中二分类变量和有序变量的相关性分析可以用kendall相关分析吗?
    • ¥15 拟通过pc下指令到安卓系统,如果追求响应速度,尽可能无延迟,是不是用安卓模拟器会优于实体的安卓手机?如果是,可以快多少毫秒?
    • ¥20 神经网络Sequential name=sequential, built=False
    • ¥16 Qphython 用xlrd读取excel报错