codeigniter 我的路由不知何故一直重定向到错误的URL

eaf3rand  于 2022-12-07  发布在  其他
关注(0)|答案(2)|浏览(154)

所以我试着用ci 3做一个pos(销售点)程序
我尝试添加一个功能,管理员可以使新的菜单和子菜单
但是当我后藤控制器“系统”时出错了
我的路由显示“sitename/system/system/menu”这个路由应该是“sitename/system/menu”。当我后藤“dashboard”控制器时,另一个控制器也起作用,路由显示“system/dashboard”
这是系统控制器

<?php
defined('BASEPATH') or exit('No direct script access allowed');

class Sistem extends CI_Controller
{
    function __construct()
    {
        parent::__construct();
        $this->load->model('M_menu');
        $this->load->model('M_user');
        if (!$this->session->userdata('email')) {
            redirect('auth');
        }
    }

    public function index()
    {
        $this->menu();
    }

    public function menu()
    {
        $data['judulpage'] = 'Manajemen Menu';
        $data['datamenu'] = $this->M_menu->getmenus()->result_array();
        $data['user'] = $this->M_user->getuserdata()->row_array();
        $this->form_validation->set_rules('menutambah', 'Menu', 'required');
        // $this->form_validation->set_message([
        //     'required' => 'Field menu add harus diisi'
        // ]);
        if ($this->form_validation->run() == false) {
            $this->load->view('template/header', $data);
            $this->load->view('template/sidebar', $data);
            $this->load->view('sistem/menu', $data);
            $this->load->view('template/footer');
        } else {
            $menu['menu'] = $this->input->post('menutambah');
            $this->M_menu->insertmenu($menu);
            $this->session->set_flashdata('flash','Sukses');
            redirect('sistem');
        }
    }

这是sidebar.php我认为这是问题所在,但我找不到解决方案

<?php
$role_id = $this->session->userdata('role_id');

$queryMenu = "SELECT `user_menu`.`id`, `menu`, `icon_menu`
                FROM `user_menu`
                JOIN `user_access_menu` ON `user_menu`.`id` = `user_access_menu`.`menu_id`
                WHERE `user_access_menu`.`role_id` = $role_id";
$menus = $this->db->query($queryMenu)->result_array();
                
?>
    <!-- BEGIN: Main Menu-->
    <div class="main-menu menu-fixed menu-dark menu-accordion menu-shadow" data-scroll-to-active="true">
        <div class="main-menu-content">
            <ul class="navigation navigation-main" id="main-menu-navigation" data-menu="menu-navigation">
                <li class=" navigation-header"><span>MENU</span><i class=" feather icon-minus" data-toggle="tooltip" data-placement="right" data-original-title="Apps"></i>
                </li>
                <?php foreach($menus as $menu) : ?>
                    <?php 
                        $menuid = $menu['id'];
                        $querysubmenu = "SELECT * FROM `user_sub_menu` WHERE `menu_id` = $menuid AND `is_active` = 1";
                        $submenus = $this->db->query($querysubmenu)->result_array();
                    ?>
                <li class=" nav-item"><a href="#"><i class="<?php echo $menu['icon_menu']; ?>"></i><span class="menu-title"><?php echo strtoupper($menu['menu']); ?></span></a>
                <ul class="menu-content">
                    <?php foreach($submenus as $submenu) : ?>
                        <li>
                            <a class="menu-item" href="<?php echo $submenu['url']; ?>"><i class="<?php echo $submenu['icon']; ?>"></i><span><?php echo $submenu['title']; ?></span></a>
                        </li>
                        <?php endforeach; ?>
                    </ul>
                </li>
                <?php endforeach; ?>
            </ul>
        </div>
    </div>

我从数据库中获取URL。你可以从检查模式中看到,href重定向到系统/菜单,这是正确的URL,但当我单击它时,它后藤系统/系统/菜单
第一次

g9icjywg

g9icjywg1#

修复了href="<?php echo base_url(); ?>我在php标签之前添加了/ this,但不知何故它工作了,但仍然指向错误的url localhost/sistem/menu它应该指向localhost/site/system/menu,所以我添加了base_url来添加我的sitename,它工作了,thx

<li>
    <a class="menu-item" href="<?php echo base_url(); ?><?php echo $submenu['url']; ?>">
<i class="<?php echo $submenu['icon']; ?>"></i><span><?php echo $submenu['title']; ?></span></a>
                            </li>
kmb7vmvb

kmb7vmvb2#

您不需要调用double <?php ?>标记。
就这么做

<?php echo base_url($submenu['url']); ?>

或使用以下命令简化回显语法

<?= base_url($submenu['url']); ?>

相关问题