Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 代码点火器管理路由_Php_Codeigniter_Codeigniter Url_Codeigniter Routing - Fatal编程技术网

Php 代码点火器管理路由

Php 代码点火器管理路由,php,codeigniter,codeigniter-url,codeigniter-routing,Php,Codeigniter,Codeigniter Url,Codeigniter Routing,我被这个问题困住了。 尝试访问codeigniter中的管理页面时出现404错误,我只能访问前面的页面。 这里是我的route.php文件: $route['default_controller'] = "page"; $route['404_override'] = ''; $route[':any'] = "page/index/$1"; **WORKS** $route['admin/page'] = "admin/page"; **WORKS** $route['admin/page/o

我被这个问题困住了。 尝试访问codeigniter中的管理页面时出现404错误,我只能访问前面的页面。 这里是我的route.php文件:

$route['default_controller'] = "page";
$route['404_override'] = '';
$route[':any'] = "page/index/$1"; **WORKS**
$route['admin/page'] = "admin/page"; **WORKS**
$route['admin/page/order'] = "admin/page/order"; **NOT WORKING**  <!-- this i my issue -->
$route['admin/page/edit'] = "admin/page/edit"; **WORKS**
$route['admin/page/edit/(:num)'] = "admin/page/edit/$1"; **NOT WORKING**  <!-- this i my issue -->
前端页面格式

http://www.my_site.com/index.php/about
http://www.my_site.com/admin/page
http://www.my_site.com/index.php/admin/page/edit/1
后端格式

http://www.my_site.com/index.php/about
http://www.my_site.com/admin/page
http://www.my_site.com/index.php/admin/page/edit/1
请问,有人能帮我吗? 提前谢谢

伙计们谢谢你们的回复 这里有我的页面管理控制器,我还修改了上面的route.php

<?php
class Page extends Admin_Controller
{

    public function __construct ()
    {
        parent::__construct();
        $this->load->model('page_m');
    }

    public function index ()
    {
        // Fetch all pages
        $this->data['pages'] = $this->page_m->get_with_parent();

        // Load view
        $this->data['subview'] = 'admin/page/index';
        $this->load->view('admin/_layout_main', $this->data);
    }

    public function order ()
    {
        $this->data['sortable'] = TRUE;
        $this->data['subview'] = 'admin/page/order';
        $this->load->view('admin/_layout_main', $this->data);
    }

    public function order_ajax ()
    {
        // Save order from ajax call
        if (isset($_POST['sortable'])) {
            $this->page_m->save_order($_POST['sortable']);
        }

        // Fetch all pages
        $this->data['pages'] = $this->page_m->get_nested();

        // Load view
        $this->load->view('admin/page/order_ajax', $this->data);
    }

    public function edit ($id = NULL)
    {
        // Fetch a page or set a new one
        if ($id) {
            $this->data['page'] = $this->page_m->get($id);
            count($this->data['page']) || $this->data['errors'][] = 'page could not be found';
        }
        else {
            $this->data['page'] = $this->page_m->get_new();
        }

        // Pages for dropdown
        $this->data['pages_no_parents'] = $this->page_m->get_no_parents();

        // Set up the form
        $rules = $this->page_m->rules;
        $this->form_validation->set_rules($rules);

        // Process the form
        if ($this->form_validation->run() == TRUE) {
            $data = $this->page_m->array_from_post(array(
                'title', 
                'slug', 
                'body', 
                'template', 
                'parent_id'
            ));
            $this->page_m->save($data, $id);
            redirect('admin/page');
        }

        // Load the view
        $this->data['subview'] = 'admin/page/edit';
        $this->load->view('admin/_layout_main', $this->data);
    }

    public function delete ($id)
    {
        $this->page_m->delete($id);
        redirect('admin/page');
    }

    public function _unique_slug ($str)
    {
        // Do NOT validate if slug already exists
        // UNLESS it's the slug for the current page


        $id = $this->uri->segment(4);
        $this->db->where('slug', $this->input->post('slug'));
        ! $id || $this->db->where('id !=', $id);
        $page = $this->page_m->get();

        if (count($page)) {
            $this->form_validation->set_message('_unique_slug', '%s should be unique');
            return FALSE;
        }

        return TRUE;
    }
}

您似乎没有

function index()

在您的管理员控制器中。

我没有看到任何指向您的
管理员控制器的路由或URL。如果用户键入
http://.../admin/page
Codeigniter将尝试查找名为
Admin
的控制器,而不是
Admin\u controller
,除非已设置路由

此外,您还有以下路由:
$route[':any']=“page/index/$1”此路由将获取给定的任何URL,并将用户重定向到
页面
控制器(您尚未提供任何代码)。我想摆脱它,或者它的功能是什么

您需要决定的是,您的管理员URL是否应为:
http://www.my_site.com/admin/page
或者这个:
http://www.my_site.com/admin_controller/page

我个人会选择第一个,因为它看起来更干净。这意味着您必须决定是将控制器命名为
Admin\u controller
,还是只命名为
Admin
。我会选择
Admin
,这样你就不必处理路由了


最终结果应该是:

您的管理员URL:
http://www.my_site.com/admin/page

您的控制器:
application/controllers/Admin.php

class Admin extends MY_Controller {

    public function __construct() {
        //... your code here
    }

    public function page() {
        //... your code here
    }
}

谢谢你的回答。CodeGodieI,我已经通过发布页面管理员Crontroller编辑了我的问题,实际上我有页面Adim、文章管理员、仪表板管理员和用户管理员。你提供的路由仍然不起作用。路由按从上到下的顺序工作,这意味着您的所有路由都将指向该
:任何
路由。如何在管理面板中使用多个控制器。我想您展示的示例仅适用于admin.php控制器?我不确定是否理解您的问题。你能详细解释一下吗?我现在有点困惑。你能解释一下你的班级结构吗?我看到了我的控制器是的,你是对的,我看到了:我的控制器你现在在吗?也许我们可以试着一起解决。我可以通过TeamviewerI帮助你我现在在这里,如果你能帮助我就太好了