0

CI での URL/URI ルーティングを理解するのに本当に苦労しています。この例では、2 つのリンクがあります。1 つはホームで、もう 1 つはパネルです。ホームはメイン/インデックスへのリンク、パネルはメイン/パネルへのリンクです。理解を深めるためのスニペットを次に示します。

<a href="main/index"> Home </a>
<a href="main/panel"> Panel </a>

これはコントローラーのコードですmain.php

class Main extends CI_Controller
{
    public function index()
    {
        $this->load->helper('url');
        $this->load->helper('form');
        $this->load->view('templates/header');
        $this->load->view('home');
        $this->load->view('templates/footer');
    }

    public function panel()
    {
        $this->load->helper('url');
        $this->load->helper('form');
        $this->load->view('templates/header');
        $this->load->view('panel');
        $this->load->view('templates/footer');
    }
}   

そしてこちらが私のroutes (config/routes.php)

$route['main/index'] = "main/index";
$route['main/panel'] = "main/panel";
$route['default_controller'] = "main/index";

最初の実行では、自動的にメイン/インデックスに移動し、正常に動作しますが、パネル リンクをクリックすると、オブジェクトが見つかりませんと表示され、ホーム リンクもオブジェクトが見つかりません

4

1 に答える 1

1

まず、hrefのルートを基準にしたパスを使用することをお勧めします。

   <a href="/main/index"> Home </a>
   <a href="/main/panel"> Panel </a>

または、このようにさらに良い:

   <a href="<?=$base_url;?>main/index"> Home </a>
   <a href="<?=$base_url;?>main/panel"> Panel </a>

次は、ロードしているビューです。正しい方法は、コントローラー関数で1つのビューをロードすることです。

   $this->load->view('home');

そして、home.phpには、他のビュー、home.phpを含める必要があります。

   <?php $this->load->view('templates/header');?>
   ...
   <!--YOUR HOME HTML GOES HERE-->
   ...
   <?php $this->load->view('templates/footer');?>

今ルーティング。必ず/index.php/[controller]/[function]リンクを使用してください(ここhttp://ellislab.com/codeigniter/forums/viewthread/180566/のようにURLリライトを使用している場合を除く)

ルーティング構成:

   $route['default_controller'] = "main/index"; //this is the only thing you need to define

すべてのページは、そのようなURLを介してアクセスできるようになります。

インデックスページ:http ://example.com/、http ://example.com/index.php/main/index

パネルページ:http ://example.com/index.php/main/panel

于 2012-11-07T08:03:57.467 に答える