0

髪を引っ張ってハゲになると思います...

CodeIgniterチュートリアルと以前の経験によると、2番目、3番目、または4番目のセグメントが存在するかどうか、またはそれらの値は何かを簡単に判断できます。

if($this->uri->segment(3)) {
     //do something
}

また

if($this->uri->segment(3)=="foo") {
     //do something
}

FIRST SEGMENTを除く他のすべてのセグメントでは、すべて問題ありません。

FIRST SEGMENTに条件文を使用することはできません!

if($ this-> uri-> segment(1))は機能しません。常にtrueを返すからです。しかし、最初のセグメントが存在するかどうかを確認したいと思います。index.phpを削除したため、自分のサイトを参照すると、www.domain.comのように見えます。他のすべてのコントローラーは、domain.com / firstcontroller、domain.com/secondcontrollerのようになります

しかし、WEBROOTの条件を作成する必要があります。

__construct()関数を試しましたが、どちらも機能しませんでした。

私がやりたいことは、現在のページがWebルートではない場合(最初のセグメントがなくても)、またはメインコントローラーではない場合にHTMLを表示することです。

手伝ってもらえますか?

編集:エラー...ごめんなさい。私は問題を理解しました。それは正しい演算子を使用することについてでした。ORの代わりにXORを使用することになっていた。したがって、$ this-> uri-> segment(1)を決定することに問題はありません...他のセグメントとまったく同じです...

4

4 に答える 4

0

関数を実行する前に型キャストを試しましたか?

例えば

$seg = (int) 1; $this->uri->segment($seg);

または、からデータを取得しようとすることもできます

$seg_array = $this->uri->segment_array();

次に、返された配列を調べます。

于 2012-06-08T10:24:32.593 に答える
0

なぜこれが必要なのか、どこから呼び出すのかわかりませんか? 最初のセグメントは常に実行されるコントローラーの名前であり、2 番目のセグメントは実行されるそのコントローラーの関数の名前です。デフォルトのルーティングを変更していない場合。

$this->uri->uri_string()コントローラー/メソッドが返されます。ここで$this->uri->ruri_string()詳細情報を確認して見つけることもできます。これがお役に立てば幸いです。

于 2012-06-08T10:53:03.517 に答える
0
if ($this->router->class != $this->router->default_controller) {
    // Run stuff here
}

これを自分で試してください:print_r($this->router)

あなたはより確実にすることができます:

if ($this->router->class != $this->router->default_controller or $this->router->directory or $this->router->method != 'index') {
    // Run stuff here
}
于 2012-06-08T11:47:33.787 に答える
0

条件付き関数内で OR の代わりに XOR を使用することになっていました。ということで、判断に問題はありません$this->uri->segment(1)… 他のセグメントと同じですね…

于 2012-06-09T14:27:18.593 に答える