forms - 提交表单时 CodeIgniter 不正确的 URL

标签 forms codeigniter submit

我今天刚开始使用 CodeIgniter,并按照 the CI website 上的教程进行操作.
当我进行到创建新新闻项目的最后一步时,我遇到了表单提交问题。当我按下表单的提交按钮时,我希望 URL 为 jonhopkins.net/news/create,但它会转到 http://jonhopkins.net/news/jonhopkins.net/news/create 而不是,这显然是非常错误的,我不知道为什么会这样。有谁知道如何解决这一问题?

我网站上的其他所有内容(教程的页面部分)都运行良好。这是唯一打破的东西。我的所有代码都与教程中显示的完全一样,除了对项目成功提交到数据库时发生的情况进行了更改,目前从未发生过这种情况。

新闻 Controller

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


创建 View

<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>

以及生成的 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>


新闻模型 我不认为它会出现在这里,但以防万一

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


路线

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

最佳答案

form_open('news/create') 方法使用 $CI->Config->site_url() 方法,后者又使用 来自您的配置文件的 base_url

确保在 application/config/config.php 文件中将您的 $config['base_url'] 设置为您的域(带尾部斜线)。

$config['base_url'] = 'http://jonhopkins.net/';

关于forms - 提交表单时 CodeIgniter 不正确的 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14164618/

相关文章:

php - Firefox 上传表单问题

codeigniter - 为什么 CodeIgniter 重定向不删除 URL 末尾的哈希/井号 (#)?

php - 使用 JavaScript 和 PHP 的动态文本?

javascript - Jquery 提交与 javascript 提交

javascript - 为什么在 if 条件为 false 的情况下提交表单?

php - 如何使用相同的 PHP 表单在多个表中写入多个插入

javascript - javascript中的日期输入类型验证?

javascript - 表单成功处理后如何执行操作?

php - 为什么 Codeigniter 使用 HMVC 而不是 MVC?

php - 如何使用 jquery 对话框按钮提交表单?