jon*_*ins 3 forms codeigniter submit
我今天刚开始使用CodeIgniter,并且正在CI网站上关注该教程.
当我到达创建新新闻的最后一步时,我遇到了表单提交的问题.我希望URL jonhopkins.net/news/create在我按下表单的提交按钮时,但它会http://jonhopkins.net/news/jonhopkins.net/news/create改为,这显然是非常错误的,我不知道为什么会发生这种情况.有谁知道如何解决这一问题?
我网站上的其他所有内容(本教程的Pages部分)都运行良好.这是唯一破坏的东西.我的所有代码都与教程中显示的完全相同,只是对项目成功提交到数据库时发生的更改(当前从未发生过).
新闻控制器
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 {
//$success will contain the slug of the created item, or FALSE if database insertion failed
$success = $this->news_model->set_news();
if ($success) {
$this->_doView($success);
} else {
echo "Something went wrong while trying to submit the news item.";
}
}
}
public function view($slug) {
$this->_doView($slug);
}
private function _doView($slug) {
$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');
}
Run Code Online (Sandbox Code Playgroud)
创建视图
<h2>Create a news item</h2>
<?php echo validation_errors(); ?>
<?php echo form_open('news/create') ?>
<label for="title">Title</label>
<input type="input" name="title" /><br />
<label for="text">Text</label>
<textarea name="text"></textarea><br />
<input type="submit" name="submit" value="Create news item" />
</form>
Run Code Online (Sandbox Code Playgroud)
由此产生的HTML ...
<form action="jonhopkins.net/news/create" method="post" accept-charset="utf-8">
<label for="title">Title</label>
<input type="input" name="title" /><br />
<label for="text">Text</label>
<textarea name="text"></textarea><br />
<input type="submit" name="submit" value="Create news item" />
</form>
Run Code Online (Sandbox Code Playgroud)
新闻模型我不认为它会在这里,但以防万一
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'),
'date' => date("Y-m-d H:i:s")
);
if ($this->db->insert('news', $data)) {
return $slug;
} else {
return FALSE;
}
}
Run Code Online (Sandbox Code Playgroud)
路线
$route['news/create'] = 'news/create';
$route['news/(:any)'] = 'news/view/$1';
$route['news'] = 'news';
$route['(:any)'] = 'pages/view/$1';
$route['default_controller'] = 'pages/view';
Run Code Online (Sandbox Code Playgroud)
该form_open('news/create')方法使用的$CI->Config->site_url()方法反过来使用base_url配置文件中的.
确保将文件$config['base_url']设置为您的域(带斜杠)application/config/config.php.
$config['base_url'] = 'http://jonhopkins.net/';
Run Code Online (Sandbox Code Playgroud)