2016-04-04 5 views
1

Итак, я только начал изучать CodeIgniter прошлой ночью, и сейчас я готов закончить заключительную часть учебника, однако я получаю ошибку 404 страницы, если не нахожу ошибку, когда я нажимаю кнопку submit кнопка.Ошибка CodeIgniter Ошибка при отправке формы

Вот последняя часть урока, где он говорит вам, чтобы создать форму и сохранять данные в базу данных: http://www.codeigniter.com/user_guide/tutorial/create_news_items.html

Мой URL для формы является http://localhost/ci/index.php/news/create

, но потом, когда я нажал кнопку отправки, то URL превращается в http://localhost/ci/index.php/news/localhost/ci/index.php/news/create

enter image description here

странно, я знаю, Theres проблема с маршрутизацией, но я не знаю конкретных из них.

Вот мой файл Маршрут:

$route['news/create'] = 'news/create'; 
$route['news/(:any)'] = 'news/view/$1'; 
$route['news'] = 'news'; 
$route['(:any)'] = 'pages/view/$1'; 
$route['default_controller'] = 'pages/view'; 

Контроллер:

class News extends CI_Controller{ 
public function __construct(){ 
    parent::__construct(); 
    $this->load->model('news_model'); 
    $this->load->helper('url_helper'); 
} 

public function index(){ 
    $data['news'] = $this->news_model->get_news(); 
    $data['title'] = 'News archive'; 

    $this->load->view('templates/header',$data); 
    $this->load->view('news/index',$data); 
    $this->load->view('templates/footer',$data); 
} 

public function view($slug = NULL){ 
    $data['news_item'] = $this->news_model->get_news($slug); 

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

    $data['title'] = $data['news_item']['title']; 

    $this->load->view('templates/header', $data); 
    $this->load->view('news/view', $data); 
    $this->load->view('templates/footer'); 
} 

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

    $data['title'] = 'Create a news item'; 

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

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

Модель:

class News_model extends CI_Model{ 
public function __construct(){ 
    $this->load->database(); 
} 

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(); 
} 

public function set_news(){ 
    $this->load->helper('url'); 

    $slug = url_title($this->input->post('title'),'dash',TRUE); 

    $data = array(
     'title' => $this->input->post('title'), 
     'slug' => $slug, 
     'text' => $this->input->post('text') 
    ); 

    return $this->db->insert('news',$data); 
}} 

Форма:

enter image description here

+0

'

' тега отсутствует. Проверь это. –

+0

, пожалуйста, перезагрузите страницу, я изменил фрагмент изображения. Thanks – flix

+0

Попробуйте изменить 'form_open ('news/create');' to' form_open (base_url ('news/create')); '. –

ответ

0

Решение:

  1. открытое приложение \ Config \ config.php
  2. ищет $ конфиге [ ''] base_url
  3. установить его в $ конфигурации [ 'base_url'] = '';
Смежные вопросы