用户
 找回密码
 入住 CI 中国社区
搜索
查看: 4143|回复: 10
收起左侧

[HELP] CI form_validation->run()总是返回false,求助

[复制链接]
发表于 2014-10-30 16:51:40 | 显示全部楼层 |阅读模式
代码几乎是按照中文手册实现的. 先 views/news/createcreate.php

<h2>Create a news item</h2>
<form>
<?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>


然后是News类下的create 函数:

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

    }


建表sql:
CREATE TABLE news (  id int(11) NOT NULL AUTO_INCREMENT,  title varchar(128) NOT NULL,  slug varchar(128) NOT NULL,  text text NOT NULL,  PRIMARY KEY (id),  KEY slug (slug));


然后到  if ($this->form_validation->run() == FALSE) 这里的验证的时候,总是返回false. 刚刚的初学者..求助各位大仙...


发表于 2014-10-30 17:09:37 | 显示全部楼层
本帖最后由 Closer 于 2014-10-30 17:15 编辑

你把 <input type="input" name="title" /><br />
改成 <input type="text" name="title" /><br />




好像也不是這個問題...
眼睛看到快脫窗了
找不到問題在哪!




你為什麼又包了一層 <form> ???
刪掉 <form> 後就會正常了



 
 楼主| 发表于 2014-10-30 17:33:51 | 显示全部楼层

我这边点完提交按钮后的地址栏路径变成:
http://localhost/weixinServer/index.php/news/localhost/weixinServer/index.php/news/create 这样的了.然后页面显示的内容是 :
404 Page Not Found

The page you requested was not found.


以下是路由器的设置:

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

以下是显示的静态页面配置
$route['default_controller'] = "pages/view";
$route['(:any)'] = 'pages/view/$1';


发表于 2014-10-30 17:35:43 | 显示全部楼层
你的 <form> 有刪掉了?
 楼主| 发表于 2014-10-30 17:36:37 | 显示全部楼层
Closer 发表于 2014-10-30 17:35
你的  有刪掉了?

删掉了.
发表于 2014-10-30 17:52:13 | 显示全部楼层
請檢查你的 $config['base_url'] = '';
 楼主| 发表于 2014-10-30 18:25:27 | 显示全部楼层
Closer 发表于 2014-10-30 17:52
請檢查你的 $config['base_url'] = '';

问题解决了,我在这里说下原因:
首先url路径的问题.地址栏双重路径. 是因为 $config['base_url']        = ''; 设置成了 $config['base_url']        = 'localhost/weixinServer';
解决:将此留空.

然后是在view下面create.php 中多出的 <form>问题,之前有在<h2>下面添加<form>的开始标签.这个多余了.去掉之后如下:
<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>

然后全部保存,重新运行.  执行ok,正常跳转页面.数据正常保存到数据库.

太感谢了这位大仙了....{:soso_e163:}{:soso_e160:}{:soso_e163:}
发表于 2014-11-15 11:43:16 | 显示全部楼层
form应该用post来传送吧
发表于 2014-11-17 09:31:36 | 显示全部楼层

点评

默认get 需要改成post  发表于 2014-11-19 08:01
发表于 2014-11-19 09:12:48 | 显示全部楼层
哪邊有說是用 GET ?
我都是用 POST 去承接值

本版积分规则