2015-04-04 67 views
0

這是我在這裏的第一個問題,所以請善待!我第一次設置了Codeigniter程序,而當我使用索引視圖時,我無法使單個視圖頁面正常工作。它返回一個404頁面未找到的錯誤。codeigniter 404頁未找到正在查看一個項目

我有代碼在我的foreach用於指向我覺得其中索引視圖的URL應該是:

<a href=<?= site_url("kittens/view/" . $item->id)?>>Details</a> 

這需要我到localhost:8888/index.php文件/小貓/查看/ 1,如果我點擊ID爲1的小貓。但我得到一個404錯誤。

這裏是我的視圖控制器功能:

function view(){ 
    $this->load->model("kittensmodel"); 
    $this->load->view('_header'); 
    $this->load->view('detailview', $data); 
    $data['kitten_item']= $this->kittensmodel->details(); 

    } 

這裏是我的模型功能:

function details(){ 
    $id = $this->url->segment(3); 
    $this->db->select('*') 
      ->from('kittens') 
      ->where('id', $id); 
    $data = $this->db->get(); 
    return $data->result(); 

} 

而我的DetailView文件只是有這個,對它進行測試:

<?php 
    print_r($kitten_item); 
?> 

我一直在玩弄路線,但一直沒有任何運氣。這就是我現在所擁有的:

$route['default_controller'] = 'welcome'; 
$route['404_override'] = ''; 
$route['translate_uri_dashes'] = FALSE; 
$route['kittens/(:any)'] = 'kittencontroller/view/$1'; 

我是新來的PHP和笨和答案可能很簡單,但我會很感激的幫助!

+2

從哪裏** $ **數據過來這裏** $這個 - >負載>視圖(「的DetailView」 ,$ data); **並且在獲取** $ data **之前調用視圖值 – 2015-04-04 05:17:23

回答

0

嘗試使用這個鏈接

<a href=<?= site_url("kittens/".$item->id)?>>Details</a> 
0

我想這是因爲你的網站URI鏈接應該BASE_URL和

<a href="<?php echo base_url('kittens'.'/'. $this->url->segment(3))?>">Details</a>

<a href=<?= base_url("kittens" .'/'. $this->url->segment(3))?>>Details</a>

路線:

$route['kittens/(:any)'] = 'folder/controller-name/$1';

$route['kittens/(:any)'] = 'controller-name/$1';

或者

$route['kittens/(:any)'] = 'folder/controller-name/index/$1';

$route['kittens/(:any)'] = 'controller-name/index/$1';

務必讓你的鏈接你的路線,你設置一致。

0

嘗試

<a href=<?= site_url("kittens/view?q=" . $item->id)?>>Details</a> 

在控制器

function view(){ 
    $q = $this->input->get('q',True); 
    $this->load->model("kittensmodel"); 
    $data['kitten_item']= $this->kittensmodel->details($q); 
    $this->load->view('_header'); 
    $this->load->view('detailview', $data); 

    } 

模型

function details($q){ 
    $this->db->select('*') 
      ->from('kittens') 
      ->where('id', $q); 
    $data = $this->db->get(); 
    return $data->result(); 

} 

和的DetailView

<?php 
    print_r($kitten_item); 
?> 
+0

我試過了,現在我得到一個新的錯誤:調用未定義的方法Kittensmodel :: details() - 任何想法爲什麼? - – fsp712 2015-04-05 20:27:33

+0

您創建了kittensmodel的模型名稱,並在此模型中粘貼了函數詳細信息() – 2015-04-06 08:24:50

+0

謝謝Sameed,實際上,由於語法問題,我得到了最後一個錯誤。您的解決方案奏效,謝謝! – fsp712 2015-04-06 20:04:05

0

如果你的控制器實際上是所謂的kittenscontroller,那麼你的路徑應該是

$route['kittens/(:any)'] = 'kittenscontroller/view/$1'; 

CI將產生一個404頁,如果你的控制器不存在找不到。

我注意到你在其他地方使用複數kittensxxxx,除了在上述路線中使用的控制器。

你應該經常通過手動輸入實際的URL來檢查這種事情來檢驗它。

,如果你要使用這條路線,那麼你的鏈接應該成爲

<a href="<?= site_url("kittens/" . $item->id)?>">Details</a>