frieda_fs 发表于 2014-10-30 16:51:40

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

代码几乎是按照中文手册实现的. 先 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. 刚刚的初学者..求助各位大仙...


Closer 发表于 2014-10-30 17:09:37

本帖最后由 Closer 于 2014-10-30 17:15 编辑

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

static/image/hrline/line3.png

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

static/image/hrline/line3.png

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


 

frieda_fs 发表于 2014-10-30 17:33:51

Closer 发表于 2014-10-30 17:09
你把
改成



我这边点完提交按钮后的地址栏路径变成:
http://localhost/weixinServer/index.php/news/localhost/weixinServer/index.php/news/create 这样的了.然后页面显示的内容是 :
404 Page Not FoundThe 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';

Closer 发表于 2014-10-30 17:35:43

你的 <form> 有刪掉了?

frieda_fs 发表于 2014-10-30 17:36:37

Closer 发表于 2014-10-30 17:35
你的有刪掉了?

删掉了.

Closer 发表于 2014-10-30 17:52:13

請檢查你的 $config['base_url'] = '';

frieda_fs 发表于 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:}

codelvgao 发表于 2014-11-15 11:43:16

form应该用post来传送吧

Closer 发表于 2014-11-17 09:31:36

codelvgao 发表于 2014-11-15 11:43
form应该用post来传送吧
form_open() 是用POST傳
http://codeigniter.org.cn/user_guide/helpers/form_helper.html#content

Closer 发表于 2014-11-19 09:12:48

哪邊有說是用 GET ?
我都是用 POST 去承接值
页: [1]
查看完整版本: CI form_validation->run()总是返回false,求助