3

これで私を助けてください。

例を見てみましょう:私はこの通常のURL「localhost / CI / index.php / base/storeurl」を持っています。

Codeigniterに「localhost/CI/storeurl」を探すように通知するにはどうすればよいですか。

indexという名前の関数があり、Base.phpクラスのパラメーターstoreURLを受け入れます。これで私を助けてください。前もって感謝します。

4

4 に答える 4

4

探していたものをついに見つけました。これが、routes.php で私のコードがどのように見えるかです。

/* Custom Routes. */
// Store Normal Pages.
$route['home/(:any)'] = "base/home/$1";
$route['about/(:any)'] = "base/about/$1";
$route['services/(:any)'] = "base/services/$1";
$route['contact/(:any)'] = "base/contact/$1";
$route['feedback/(:any)'] = "base/feedback/$1";

// CategoryPage.
$route['category/(:any)/(:num)'] = "base/category/$1/$2";
// ProductPage.
$route['product/(:any)/(:num)'] = "base/product/$1/$2";


// For Main Home Page.
$route['(:any)'] = "base/home/$1";

この問題の解決を手伝ってくれたすべての人に本当に感謝しています。君たちありがとう。

于 2013-01-12T11:25:02.543 に答える
3

index.phpWAMP環境のCodeIgniterでURL​​から削除するために必要な手順は3つだけです。

  1. .htaccessCodeIgniterのルートフォルダーにファイルを作成し、次のコードを追加します。

    RewriteEngine On
    RewriteBase /CodeIgniter/
    RewriteCond %{REQUEST_URI} ^system.*
    RewriteRule ^(.*)$ /index.php/$1 [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php/$1 [L]
    
  2. 次の方法で、アプリケーションフォルダ内の$config['index_page']空の文字列に変更します。config.php

    $config['index_page'] = '';
    
  3. ファイルでApacherewrite_moduleを有効にしhttpd.confます。

この記事も参照できます

于 2013-01-08T14:21:56.640 に答える
1

ここに、いくつかの疑似コードと、開始するための正しい方向へのいくつかのポイントがあります。

まず、URL から index.php を削除する必要があります。ここには、質問のこの部分にすでに答えている何百もの質問があるはずなので、この部分はあなたに任せます.

多くの人がコメントしているように、この URL 構造をすぐに実現する方法はなく、機能させるにはかなりの量のコードが必要になります。この特定のセットアップを実装する方法は、すべてのリクエストを 1 つのコントローラーにルーティングし、そのコントローラー内でカスタム ルーティングを処理することです。

これを行うにはroutes.php、キャッチ オールの下部にルートを追加します。他のコントローラ (ニュース、イベントなど) のルートは、この上に追加できます。以下は、始めるための routes.php の例です。

config/routes.php

// Other routes go up here

// Catch all route 
$route['(:any)'] = 'page/view';

// Home page route 
$route['default_controller'] = "page/index";

次に、(codeigniters url ヘルパーを使用して) URL をチェックするview関数を作成し、その URL に対応する正しいビューをロードします。controllers/page.php

コントローラー/page.php

class Page extends CI_Controller {

   public function index()
   {    
      // Do all code for your home page in here
   }

   public function view()
   {        
      // Retrive the url string
      $url = $this->uri->uri_string();

      // Check if the corresponding view file exists
      if (file_exists(APPPATH.'views/'.$url.'/index.php')){

         // Load the view
         $this->load->view($url.'/index');

      } else {
         show_404();
      } 
   }
}

たとえば、ユーザー http://yoursite.com/CI/about-usが. 存在する場合はそのビュー ファイルをロードし、存在しない場合は 404 にリダイレクトします。about-us/application/views/about-us/index.php

上記はすべてメモリから入力された疑似コードであるため、すぐには機能しない可能性がありますが、目的の結果を達成する方法の手がかりが得られることを願っています.

于 2013-01-09T03:46:00.060 に答える
0

私はいつもルーティングを機能させることができません。最後に私は解決策を見つけました。コードイグナイターは速くて軽いので本当に好きなので、困っている人を助けるために共有したいだけです。$this->uri->segment(1) に表示する動的カテゴリ タイトルに取り組んでいます。

$route['(:any)/method/(:any)']  = 'Class/method';    
$route['(:any)/gallery/(:any)'] = 'Class/gallery';    
$route['(:any)/listing/(:any)'] = 'Class/listing';

ルートは、$this->uri->segment(2) がメソッドである限り、クラスのメソッドを実行することに注意します。あなたのURLは美しくなります:

base_url()/business-services/gallery/6 
base_url()/travel/gallery/12

また、ルートは具体的でなければならないことも学びました。URLが次のような場合:

base_url()/travel/singapore/listing/1201

次に、ルートは次のようにする必要があります。

$route['(:any)/(:any)/listing/(:num)']  = 'Class/listing';

メソッドに渡すパラメーターがある場合(paramまたはuri_segmentを使用するかどうかによって異なります)、

$route['(:any)/(:any)/listing/(:num)']  = 'Class/listing/$1';

楽しんで :)

于 2015-06-16T03:25:15.013 に答える