0

CodeIgniter を使用すると、コードで奇妙な動作が発生します。私が欲しいのは、データベースにある種の人のリストを作成することです。特定の人の ID を入力すると、データベース内のこの人について取得したすべての情報を含むページが表示されます。

単純なことです。ニュース公式チュートリアルの事で成功したのにこれでは全く動かない!

次のように、viewPersonById メソッドを使用して、Person という名前のコントローラー継承クラスを作成しました。

class Person extends CI_Controller{

      public function __construct()
      {
      parent::__construct();
      $this->load->model('Person_Model');
}

public function index()
{

}

public function viewPersonById($parId){
    $data['person'] = $this->Person_Model->get($parId);

    $data['title'] = 'Person information';

    $this->load->view('templates/header', $data);
    $this->load->view('people/view', $data);
    $this->load->view('templates/footer');
} 

私のroutes.phpは次のように書かれています:

$route['people/(:any)'] = 'Person/viewPersonById/$1';

$route['news/create'] = 'news/create';
$route['news/modify/(:any)'] = 'news/modify/$1';
$route['news/(:any)'] = 'news/view/$1';
$route['news'] = 'news';

$route['(:any)'] = 'pages/view/$1';
$route['default_controller'] = 'pages/view'; 

そして、ブラウザにhttp://127.0.0.1:8888/ci/index.php/people/1と入力すると、404 が表示されます。私のコードで何が間違っていますか? 見えない。

何か案は ?私の貧弱な英語に感謝し、申し訳ありません。

編集 :

わかりました、何が悪いのかわかりました。私のファイルの名前が「person.controler.php」や「person.model.php」のように変だったので、私は史上最大のジャッカスのように感じます. コントローラーの名前と、routes.php に入れる内容は正確に一致する必要があります。

そのため、コントローラー内にモデルをロードできるように、person.controler.php を person.php に、person.model.php を person_model.php に名前変更する必要がありました。CI は、ファイルの名前を使用して、何をロードする必要があるかを確認します。気をつけてください。

4

3 に答える 3

0

直接関係はありませんが、CodeIgniter Style Guideを参照してください。

メソッド名は小文字にし、単語をアンダースコア ('_') で区切る必要があります。あなたはそれが気に入らないかもしれませんし、-どこで知っているのですか- で面倒だと思うかもしれませんが、標準に固執することが常に最善の考えであると信じてください。

さらに、すべてのコントローラーのすべてのメソッドをカスタム ルーティングする必要はありません。また、URLに大文字を使用したくない

于 2011-11-08T18:42:10.937 に答える
0

あなたの .htaccess が設定されていないか、読み取られていないように思えます。

index.php スクリプトが見つかるまで、すべてのデフォルトのサーバー構成がパスをたどるわけではありません。

于 2011-11-08T14:26:26.097 に答える