2012-02-20 7 views
0

私はCodeIgniterの作業を開始したばかりですが、セグメントベースのURLに問題があります。私は彼らに$variable = $this->uri->segment(2);という名前をつける方法を理解していますが、私がURLに行くときはいつも、私は404を手に入れています。私はURIルーティングのために何かする必要がありますか?Codeigniter:クエリでURLセグメントを使用する

たとえば、localhost/ci/index.php/games/1000(1000はゲームID)に移動しようとしていますが、404があります。localhost/ci/index.php/games/正常に動作します。

+0

はCodeIgniterのを知っているが、URLの必要性のいずれかで、 '/'エンドまたはファイル拡張子でディレクトリを示すためにしないでください例えば。 '.php'。 – Zac

+0

@ Zacいいえ、それはURIセグメントの仕組みではありません(そして、CIのことだけではありません)。「index.php」があるとメモすると、それらはディレクトリにはなりません。 –

+0

謝罪、私をまっすぐにしてくれてありがとう...日常は学校で一日です! – Zac

答えて

3

あなたはこの

class Games extends CI_Controller 
{ 
    public function index() 
    { 
     echo 'this is index'; 
    } 
    public function game($id) 
    { 
     echo $id; 
    } 
} 

ような何かをし、あなたのroutes.php

にこれを追加しない限り、あなたはこのコンテンツ

class Games extends CI_Controller 
{ 
    public function index($id) 
    { 
     echo $id; 
    } 
} 

games.phpと呼ばれるコントローラを持っている必要がありますそれが動作するためには

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

デフォルトでは、URIの2番目のセグメントは私ですCIが自動的に呼び出すコントローラー内のthod(機能)。

だからあなたの場合には、あなたが実際に存在し、したがって、404

につながるしないゲームコントローラ、内1000()という名前の関数を呼び出すようにしようとしていることは代わりに私はあなたがやりたいと思うものを呼んでいますindex()関数を呼び出し、変数1000を渡します。

localhost/ci/index.php/games/index/1000に行く場合は、もう404を得るべきではありませんが、URIセグメントは変数1000を得るのが間違っています。ここで

は修正URIセグメントとコントローラの実施例である:

class Games extends CI_Controller 
{ 
    // good habit to call __construct in order to load 
    // any models, libraries, or helpers used throughout this controller 
    public function __construct() 
    { 
     parent::__construct(); 
    } 

    // default controller 
    public function index() 
    { 
     // this should display 1000 
     echo $this->uri->segment(3); 
    } 
} 
関連する問題