【问题标题】:In CodeIgniter it says "Object not found"在 CodeIgniter 中显示“找不到对象”
【发布时间】:2018-03-05 12:02:05
【问题描述】:

我无法访问控制器 logins.php 它给出 404 错误。

HTML

<section id="butoes">
  <div class="container">
    <div class="row rowCenter">
      <div class="col-md-4">
        <h3><a href="<?=base_url()?>logins/">Login</a></h3>
        <a href="<?=base_url()?>logins/"><div class="sim-button btn button14">Login</div></a>
      </div>
      <div class="col-md-4">
        <div class="sim-button btn button14">Register</div>
      </div>
      <div class="col-md-4">
        <div class="sim-button btn button14">Recover Password</div>
      </div>
    </div>
  </div>
</section>

控制器

function Logins extends CI_Controller
{
   function __construct()
   {
      parent::__construct();
   }

   function index()
   {
      $this->load->view('login_index');
   }
}

页面 login_index 存在于 views 文件夹中。

登录控制器在这个路径 C:\xampp\htdocs\CI2\application\controllers\logins.php

【问题讨论】:

  • 为什么要使用两个锚标签登录?
  • function Logins extends CI_Controller ???
  • 它可能找不到它,因为没有class 登录存在。你试过用class Logins extends CI_Controller替换function Logins extends CI_Controller吗?
  • 分享您的 htaccess 文件。
  • @kerbholz 是的,我现在试试,它偷了同样的错误

标签: php html codeigniter syntax-error


【解决方案1】:

404 是找不到页面的错误代码。这意味着您在编写调用控制器的 url 时出错了。我会给你一个解决方案如何检查这个。

  1. 检查application/config/config.php 中的基本网址。然后你可以看到这个代码$config['base_url'] = '';。确保数组的内容与您的 Web 名称相同。
  2. 检查基本目录中的文件.htacces 是否存在。如果那里没有htaccess,你需要在写base_url()之后写index.php
  3. 检查敏感大小写。确保控制器类的名称与控制器文件名相同。
  4. 检查您的控制器网址。确保使用真正的控制器目录编写 url。例如,您在application/controllers/login/Login.php 中有一个控制器。你必须写你的 url &lt;?php echo base_url(); ?&gt;/login/Login(这意味着你在 Login 控制器中找到 index 方法)。

【讨论】:

  • 第一步没问题,第二步我把.htaccess改成“RewriteEngine On RewriteBase /projFolder RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.* )$ /projFolder/index.php/$1 [L] " 第三步,名字相等,控制器的名字是logins.php 第四步,我查了几遍,相等
  • @DanielLopes 很好的评论。
  • @GilianPratama 抱歉,这是我第一次在 stackoverflow 上提问:/
  • @DanielLopes 没关系,先生。我的回答只是为了解决你的问题。为下一步。当你点击你的&lt;a&gt;&lt;/a&gt;时会出现什么网址??
  • 感谢我点击时的网址是“localhost/CI2/logins”现在我的问题解决了我做了什么?我在(在这种情况下)CI2 文件夹上创建了一个 .htaccess 电影,然后我输入了下一个代码: RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/ $1 [L]
【解决方案2】:

如果你没有设置你的基本 url,那么在 application/config/config.php 中设置你的基本 url 像这样

$config['base_url'] = 'set-base-url';   

<section id="butoes">
<div class="container">
<div class="row rowCenter">
  <div class="col-md-4">
    <h3><a href="<?php echo base_url('logins'); ?>">Login</a></h3>
    <a href="<?php echo base_url('logins'); ?>"><div class="sim-button btn button14">Login</div></a>
  </div>
  <div class="col-md-4">
    <div class="sim-button btn button14">Register</div>
  </div>
  <div class="col-md-4">
    <div class="sim-button btn button14">Recover Password</div>
  </div>
</div>

【讨论】:

  • 在控制台上显示“加载资源失败:服务器响应状态登录为 404(未找到)”
  • 你设置了你的 base_url() 吗?
  • 这是我在 CodeIgniter 中的第二个应用程序,我把它留空了。在我的第一个应用程序中是这样的“$config['base_url'] = '';”它没有问题
  • 你必须设置你的基本 url 才能使用这个函数 base_url()
  • 你的 htaccess 文件和 url 助手呢?
【解决方案3】:

1.- 检查 application/config/config.php

$config['base_url] = '';

示例:

$config['base_url'] = 'http://localhost/myproject/';


2.- 检查根目录中的 .htaccess 文件。你不写 index.php。这是我的配置文件:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

检查 application/config/ 中的 config.php 文件并更改

$config['index_page'] = 'index.php';

到:

$config['index_page'] = '';


3.- 最后,控制器中的第一个字母总是大写

祝你好运!

【讨论】:

  • 感谢现在,如果我在 url 上使用 index.php 调用控制器,它可以工作,但我不想写那个。我的 .htaccess 与您在此处发布的代码相同
  • 除了.htaccess之外,您还必须修改config文件夹中名为config.php的文件
猜你喜欢
  • 2014-02-26
  • 2017-02-17
  • 1970-01-01
  • 2022-10-14
  • 1970-01-01
  • 1970-01-01
  • 2012-08-18
  • 2018-05-24
  • 2016-08-07
相关资源
最近更新 更多