2014-09-10 43 views
0

我完成了關於在codeigniter user_guide上創建新聞應用程序的教程。我現在試圖擴展教程網站,以便將文本加載到可以重新輸入並用於更新條目的textarea中。我希望查看文章頁面成爲更新的同一頁面。該視圖加載正確,但是當我點擊提交時,它將我從localhost/ci/news/foo帶到404本地主機/ ci/news/view。我主要嘗試模仿創建,並且只更改模型查詢,但由於我一直在掙扎一段時間,所以嘗試了幾個想法。使用codeigniter更新

我懷疑問題可能是下列之一。

東西,我向CI /新聞/視圖 誤用我的$塞變量 Misconnecting在我的模型查詢控制器和 語法模型。

我會發布所有相關的代碼。

這是我的控制器功能的視圖,這也是更新發生的地方。

public function view($slug) 
{ 
    $this->load->helper('form'); 
    $this->load->library('form_validation'); 

    $data['news_item'] = $this->news_model->get_news($slug); 

    $slug = $slug; 

    $this->form_validation->set_rules('text', 'text', 'required'); 

    if (empty($data['news_item'])) 
    { 
     show_404(); 
    } 

    $data['title'] = $data['news_item']['title']; 
    if ($this->form_validation->run() === FALSE) 
    { 
    $this->load->view('templates/header', $data); 
    $this->load->view('news/view', $data); 
    $this->load->view('templates/footer'); 
    } 
    else 
    { 
     $this->news_model->update_news(); 
     $this->load->view('news/success'); 
    } 
} 

這裏是我的update_news()在模型

public function update_news($slug) 
{ 
$data = array(
    'slug' => $slug, 
    'text' => $this->input->post('text') 
); 
$this->db->set('slug', $slug); 
$this->db->update('news', $data); 
} 

和我view.php

<?php 
echo validation_errors(); 
echo form_open('news/view'); 

echo '<h2>'.$news_item['title'].'</h2>'; 
?> 

<label for="text">Text</label> 
<textarea name="text"><?php echo $news_item['text']; ?></textarea><br /> 

<input type="submit" name="submit" value="Update" /> 
</form> 

UPDATE:的要求,我get_news模型功能。

public function get_news($slug = FALSE) 
{ 
if ($slug === FALSE) 
{ 
    $query = $this->db->get('news'); 
    return $query->result_array(); 
} 

$query = $this->db->get_where('news', array('slug' => $slug)); 
return $query->row_array(); 
} 
+0

您可以添加 「get_news」 功能? – 2014-09-10 16:20:18

回答

1

在你的模型中只是放置在哪裏而不是集合。

public function update_news($slug) 
{ 
$data = array(
    'slug' => $slug, 
    'text' => $this->input->post('text') 
); 
$this->db->where('slug', $slug); 
$this->db->update('news', $data); 
} 
+1

哇,一打CodeIgniter項目後,這個問題是閃回。是的,我相信這些是我正在尋找的。謝謝!希望這有助於未來的人! – Goose 2017-01-08 19:46:58

0

我已經做了一些小的更新到你的代碼,但是我仍然需要看你的「get_news」功能,如果它壞了充分澄清(通過它顯示的404)

控制器:

<?php 
public function view($slug) { 

    $data['news_item'] = $this->news_model->get_news($slug); 

    if (empty($data['news_item'])) { 
     show_404(); 
    } 

    $this->load->helper('form'); 
    $this->load->library('form_validation'); 

    $this->form_validation->set_rules('text', 'text', 'required'); 

    if ($this->form_validation->run() === FALSE) { 
     $this->load->view('templates/header', $data); 
     $this->load->view('news/view', $data); 
     $this->load->view('templates/footer'); 
    } else { 
     $this->news_model->update_news(); 
     $this->load->view('news/success'); 
    } 
} 
?> 

型號:

<? 
public function update_news($slug) { 
    $data = array(
     'text' => $this->input->post('text') 
    ); 
    $this->db->where('slug', $slug); 
    $this->db->update('news', $data); 
} 
?> 

查看:

<?php 
echo validation_errors(); 
echo form_open('news/view/'.$news_item['slug']); 
?> 

<h2><?=$news_item['title']?></h2> 

<label for="text">Text</label> 
<textarea name="text"><?=$news_item['text'];?></textarea> 
<br /> 
<input type="submit" name="submit" value="Update" /> 
</form> 
+0

仍然越來越404.將更新發布與get_news – Goose 2014-09-10 18:28:08

0

如果您嘗試加載不存在的視圖文件,即使控制器存在,也會出現404錯誤。

您是否創建了「新聞/成功」視圖文件?