【问题标题】:CodeIgniter Strange URL Routing IssueCodeIgniter 奇怪的 URL 路由问题
【发布时间】:2015-07-10 06:54:45
【问题描述】:

好的。所以我通过在 routes.php 文件中添加这条规则来更改路由:

$route['tools/(:any)'] = "b/view/$1";

但是,当我访问http://mywebsite.com/tools/toolid 时,我收到以下错误:

遇到一个 PHP 错误

严重性:通知

消息:尝试获取非对象的属性

文件名:VIEWS/LISTING_PAGE.PHP

第 64 行

所以LISTING_PAGE.PHP文件第64行的代码是:

echo $categoryinfo->name;

LISTING_PAGE.PHP 是一个视图,由 B 类中的代码加载,具体是这一行:

$this->load->view("listing_page", $data);

现在,奇怪的是,如果我将 routes.php 中的路由规则更改为:

$route['tools/id/(:any)'] = "b/view/$1"; //I added an id 'section'

然后代码可以正常工作。

如果我访问http://mywebsite.com/b/view/toolid,该代码也可以完美运行。

因此,如果有多个“部分”(工具/id),那么代码可以完美运行,如果只有一个“部分”(工具/),那么就会出现非对象错误。

有谁知道是什么导致了这个问题?

【问题讨论】:

  • route.php中是否有多个tools/用于路由?如果是肯定的,而不是它对 codeigniter 的模棱两可的情况。
  • routes.php 中关于工具的规则只有一条
  • 在您的控制器中,您从 url 获取 id 吗?而不是你用来获取 $categoryinfo 数据
  • 我认为,问题不在路线上。查看您如何将值设置为 $categoryinfo 以及如何将其显示。无论如何,它不是反对。例如,未定义变量。也许,由于某些情况,此行没有执行
  • id 只是 url 的任意“部分”,它路由到“真实”url,即 b/view

标签: php codeigniter routes


【解决方案1】:

@splash58 是对的 你应该输入:

echo '<pre>', var_dump($category);exit;

在打开 php 标签后查看文件的第一行,看看你有什么。

【讨论】:

  • array (size=0) empty : 这是结果
  • 您是否在开始的问题中更改了变量名称,因为我现在看不到`$category 变量?您应该在此处发布整个控制器和路由文件,以便为您提供帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-19
  • 2016-02-04
  • 2020-01-29
相关资源
最近更新 更多