2017-11-21 16 views
0

Codeigniterの基本を学んだが、その後停止した。だから私は再学習しています。codeigniterのページを読み込むためのスイッチケースを使用

私はこれを行うためのより高度な方法があることを知っていますが、私は理解することが私のやり方をしたいと思います。私は、私を混乱させるだけの高度なものを噛んでいません。貼り付けスニペットをオンラインでコピーするのは簡単ですが、私のコードですべてを理解したいと思っています。

とにかく私はいつもif文をphp、idkに戻していました。なぜなら、コードケースの中で適切なガイドラインを探したことがないので、switch caseが最もよく使い慣れたif文を使っていたことがあります。

私のプロジェクトでは、私のリンクはこのように作られています。

<a href="<?php echo base_url();?>pages/view/home">Homepage</a> 

私のコントローラでは、どのページを読み込むかを知るために私のビューメソッドを設定しています。

$data = array('page' => $this->uri->segment(3,home)); 

switch ($data['page']){ 
case 'home'; 
$data['tile'] = "Homepage"; 
$data['page'] = "userhome"; 
break; 
case 'login'; 
$data['tile'] = "Login"; 
$data['page'] = "userlogin"; 
break 
} 

$this->load->view('templates/header',$data); 
$this->load->view('templates/navbar'); 
$this->load->view('pages/'.$data['page']); 
$this->load->view('templates/footer'); 

しかし、動作しません。タイトルとページは変更されません。

if else文で簡単に実行できます。ケースを切り替える私はどこかで読ん

$temp = $this->uri->segment(3,'home'); 

if($temp == "home"){ 
$data = array('title' => 'Homepage' , 'page' => 'home'); 
$this->load->view('template/header',$data); 
$this->load->view('template/navbar'); 
$this->load->view('pages/'.$data['page']); 
$this->load->view('template/footer'); 
}else if($temp == "login"){ 
$data = array('title' => 'Login' , 'page' => 'userlogin'); 
$this->load->view('template/header',$data); 
$this->load->view('template/navbar'); 
$this->load->view('pages/'.$data['page']); 
$this->load->view('template/footer'); 
} 

が他の場合よりも高速ですが、私はただ、これまでの他のページが病気将来的に作り、ログインし、ホームページが、ロードされますを作ったアイブあなたの最初の2ページを示しますよ同じようにコードが長くなります。だから、私はスイッチケースを使用することに興味がありました。あなたがあなたの代わりにdata['title']の、data['tile']に値を代入している、switch文でミスタイプを持っているので

$temp = $this->uri->segment(3,'home');  
     switch ($temp){ 
     case 'home': 
     $data = array('title' => "Homepager" , 'page' => "home"); 
     $this->load->view('template/header',$data); 
     $this->load->view('template/navbar'); 
     $this->load->view('pages/'.$data['page']); 
     $this->load->view('template/footer'); 
     break; 
     case 'login': 
     $data = array('title' => "Login" , 'page' => "userlogin"); 
     $this->load->view('template/header',$data); 
     $this->load->view('template/navbar'); 
     $this->load->view('pages/'.$data['page']); 
     $this->load->view('template/footer'); 
     break; 
     } 
+1

これを/ switchに使用するのが最良の方法ではないと思います。 CodeIgniterには、独自のルータがあり、それを使用してページごとに1つの関数を記述します。そしてあなたの問題では、 '$ data ['page']'変数を 'var_dump'して、値が適切かどうかを調べます。 –

答えて

0

それができるのに

これは働いていましたか?

+0

さらに、** if **の例では、ページは「home」ですが、** switch **の例では、ページは「userHome」です。 –

+0

私の問題は、それが値を変更しなかったということでした。 スイッチケースコードが実行されたかどうかわかりません。 – John

+0

私はこれらの名前をここで変更しました、彼らは無関係です。私はそれらをなぜここに戻すように怠け者にしたのですか?編集を確認して、新しいスイッチケースを追加しました。 – John

関連する問題