【问题标题】:CodeIgniter - cannot set routingCodeIgniter - 无法设置路由
【发布时间】:2012-06-21 16:19:07
【问题描述】:

我对 CI 有疑问。我有一个模型:

public function Game($id) {
    $id = (int)$id;

    $q = $this -> db -> get_where('games', array('id' => $id));
    return $q -> row_array();
}

它的控制器:

public function index($gameID) {
    $data['game'] = $this->games_model->Game($gameID);
    $this -> load -> view('games/game', $data);
}

还有一个问题 ;) 我的路由设置如下:

$route['games/(:num)'] = 'games/game/$1';
$route['games'] = 'games/game/game';

但它根本不起作用。我的控制器目录是games/game.php(内部有函数Game)。我的问题是 - 我怎样才能通过$id 呢?我对 CI 很陌生,但在文档中找不到解决方案。

【问题讨论】:

  • 您遇到了什么错误?路由看起来不错,但我对你的控制器结构有点困惑。
  • 我收到 404。你为什么感到困惑?
  • 游戏太多... :) 说真的,只有在路由 URL(例如'games/21')或完整 URL('games/game/21 ' 或 'games/game/index.php/21')?
  • 这是做什么的:$route['games/(:num)'] = 'games/game/index/$1';?
  • 我喜欢把我的东西分开,所以我尽量把所有东西放在不同的文件里。 games/game/index/$1 是 games(dir)/game(file)/index(class)/$1(parameter)。但是,我做到了。这是我的错。好的路线是(修改为与我的 slug 一起使用)$route['games/(:any)-(:num)'] = 'games/game/game/$2';

标签: php codeigniter routing controller


【解决方案1】:

您可以使用remap 或者您将不得不再次修改您的路由路径。看看this 的问题,这里已经问过了。

【讨论】:

    【解决方案2】:
    $route['games'] = 'games/game/index'; // Folder/Controller/Function
    $route['games/(:num)'] = 'games/game/index/$1'; // Folder/Controller/Function/Method
    $route['games/(:num)/(:any)'] = 'games/game/index/$1/$2'; 
    

    如果你想使用 slug,url_title($title, 'underscore', TRUE) 它会帮助你

    【讨论】:

      猜你喜欢
      • 2016-06-18
      • 1970-01-01
      • 2011-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多