【问题标题】:Unable to call function in codeigniter无法在codeigniter中调用函数
【发布时间】:2018-10-04 10:56:06
【问题描述】:

我是 CodeIgniter 的新手,现在我正在创建一个站点。管理员可以在登录后查看所有记录,但不幸的是,目标 URL 显示 404 Page Not Found。我正在使用 Temple(header n footer) 作为菜单。 这是我的 header.php

<div class="collapse navbar-collapse" id="navbarColor01">
      <ul class="navbar-nav mr-auto" >
<?php if(!$this->session->userdata('logged_in')) : ?>
        <li class="nav-item"><a class="nav-link" href="<?php echo base_url(); ?>users/login">Login</a></li>
        <li class="nav-item"><a class="nav-link" href="<?php echo base_url(); ?>users/register">Register</a></li>
      <?php endif; ?>
      <?php if($this->session->userdata('logged_in')) : ?>
      <li class="nav-item"><a class="nav-link" href="<?php echo base_url(); ?>posts">List Item</a></li>
        <li class="nav-item"><a class="nav-link" href="<?php echo base_url(); ?>posts/create">Create Post</a></li>
        <li class="nav-item"><a class="nav-link" href="<?php echo base_url(); ?>users/logout">Logout</a></li>
        <li class="nav-item"><a class="nav-link" href="<?php echo base_url(); ?>admin">Admin</a></li>
      <?php endif; ?>
      </ul>
    </div>

当我单击管理菜单时,它应该转到管理控制器并调用索引函数进行确认,我输入了 echo 并死了,但它显示 404 错误。这是我的管理员控制器

<?php
class Admin extends CI_Controller{
    public function index(){    
        echo "Reach here"; die;
        if (!$this->session->userdata('logged_in')) {
            redirect('users/login');
        }
?>

提前感谢您的帮助。

【问题讨论】:

  • 控制器怎么称呼?
  • 你的默认控制器是什么?
  • 这个文件是重定向('users/login');在用户文件夹中
  • 默认控制器是 $route['default_controller'] = 'pages/view';
  • @prasanna puttaswamy 如果用户没有登录并直接访问 url 然后重定向到登录页面。但我只是在调用此函数之前检查并使用 die

标签: php codeigniter codeigniter-3


【解决方案1】:

把你的管理员链接写成这样:

因为Admin 不是您的默认controller,并且您没有为管理员设置路由

把你的admin链接像这样

<li class="nav-item">
  <a class="nav-link" href="<?php echo base_url('admin/index'); ?>">Admin</a> 
</li>

但如果你想这样做:

<li class="nav-item">
      <a class="nav-link" href="<?php echo base_url('admin'); ?>">Admin</a> 
</li>

然后像这样设置route.php

$route['admin'] = 'admin/index';

和控制器:

<?php
class Admin extends CI_Controller{
    public function index(){    
        echo "Reach here"; die;
        if (!$this->session->userdata('logged_in')) {
            redirect('users/login');
        }
?>

【讨论】:

  • 它可以工作,但不知道为什么它不调用没有索引,即使我使用相同的后控制器
  • 如果你想使用你的 url,你必须为管理控制器设置 route.php
  • 好的,谢谢Pradeep
【解决方案2】:

请使用父构造,然后你就可以按照自己的方式去做了。

public function __construct() {
            parent :: __construct();

            $this->load->model(array('restaurants_m', 'categories_m', 'cities_m', 'customers_m', 'states_m', 'orders_m', 'delivery_boys_m'));

            $this->load->library(array('email'));
            $this->load->helper('url');
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-14
    • 1970-01-01
    • 1970-01-01
    • 2016-03-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多