5

最初のCIプロジェクトを開始しましたが、URLパラメーターをどのように処理するのか疑問に思っていますか?'city'という名前のコントローラーがあり、mod_rewriteを変更して、localhost/codeigniterがlocalhost/codeigniter/cityへの書き換えを使用するようにしました。私がやりたいのは、URLの最後に都市名を追加し、getsegmentを使用してテーブルをクエリすることです。

したがって、私の例はlocalhost / codeigniter/edinburghになります。最後のセグメントを取得してから、SQLクエリを作成します。しかし、私がエジンバラをURLに入れると、CIは「エジンバラ」と呼ばれるコントローラーを探していると思います。

ルーティングなどを追加する必要がありますか?

4

4 に答える 4

9

実際、ルーティングを使用してこれを行うことができます。

$ route [':any']="コントローラー/メソッド";

これにより、ベースURLの後のすべてが、指定されたコントローラーとそのコントローラー内のメソッドにリダイレクトされます。URLセグメントを取得するには、URIヘルパーを使用できます。

$ this-> load-> helper('url'); //最初にヘルパーをロードします

$ city = $ this-> uri-> segment(1);

http:// localhost / codeigniter / edinburghにアクセスする場合、上記の例の$city変数はedinburghになります。

お役に立てば幸いです。

PS。デフォルトのコントローラーを指定するためにmod_rewriteは必要ありません。config.phpの[ルート]で設定できます。デフォルトのコントローラーとしてcityを指定すると、mod_rewriteを取り除くことができます。

于 2011-01-10T13:17:15.273 に答える
3

はい、ルートを使用できます:

$route[':any/'] = "myclass/by_city_method";

しかし、古典的なURIスキームを取得するために、(たとえば)cityと呼ばれるモジュールを使用してみませんか?

class city extends Controller { 
   public void index($city=false) {
       if ($city) { } else { }
   }
}

編集:グローバル構成ファイルで、デフォルトのコントローラーとして都市を選択することもできます。

于 2011-01-10T13:09:22.070 に答える
2

別の方法:

route.php:

$route['city/(:any)'] = "city/city_lookup/$1";

city.php

<?php 
class City extends Controller {

    function City()
    {
        parent::Controller();
    }

    function city_lookup($id)
    {
        echo "$id";
    }
}
于 2011-01-10T13:31:16.263 に答える
0
$path = "/codeignter/city/viewcity/Edinburg";

これにより、Cityコントローラーが呼び出され、メソッドviewcityが値「Edinburg」を持つパラメーターで実行されます。

これがコントローラーのコードです...

class city extends Controller { 
   public viewcity($city='') {
       echo ($city === '') ? "The city you want to view is {$city}!" : "not defined!";
   }
}

アーメン:)

于 2011-01-10T13:18:26.647 に答える