【问题标题】:codeigniter form_validation is not working...(for me)codeigniter form_validation 不起作用...(对我来说)
【发布时间】:2011-03-05 04:35:28
【问题描述】:

好的,我正在尝试在 codeigniter 中验证表单

作为第一步,我想让我的表单中的所有字段都需要进行输入... 但我不能让它工作

代码如下:

我的博客.php

    <?php

    class MyBlog extends Controller{


       function MyBlog(){
           parent::Controller();
           $this->load->helper('url'); //here we load a url class that we use later
           $this->load->helper('form');// here we load form class


           $this->load->scaffolding('entries');  //scaffolfing is a feature that lets you add or remove elements from the database



            $this->load->library('form_validation');//load validation class used to validate our forms...
       }

      function index(){

          $data['title'] = "My Blog Title"; //the title of my blog
          $data['query'] = $this->db->get('entries'); //here we make a small query to entries table


          $this->load->view('myBlog_view', $data); ///load all data variables on myBlog_view.php
         //this is also for the form validation


            $this->form_validation->set_rules('title', 'Title', 'required');
            $this->form_validation->set_rules('body', 'Body', 'required');
            $this->form_validation->set_rules('author', 'Author', 'required');





          if ($this->form_validation->run() == FALSE)
            {
                //$this->load->view('myBlog_view');
            }
            else
            {
                $this->load->view('formSuccess_view');
            }

 }






     function myBlog_insert(){

           $this->db->insert('entries', $_POST);

           redirect('myBlog/');
           }


    } 

    ?>

还有 myBlog_view.php 文件:

<html>
<head>

<title><?php echo $title; ?></title>
</head>
<body>




<?php foreach($query->result() as $row): ?>
 <div class='curvebox'>
<h3><?=$row->title?></h3>


<p class="bodyText"><?=$row->body?></p>
<div class="author"><?="by: ".$row->author." on ".date("D d M Y h:i:s A", strtotime($row->date_time))?></div>
<p class="comments"><?=anchor('myBlog/comments/'.$row->id, 'Comments');?></p>
</div>


<?php endforeach; ?>



<div class="theForm">

<?php echo $this->form_validation->error_string; ?>

<?=form_open('myBlog/myBlog_insert');?>


<label for="title">Title:</label>

<input type='text' name="title" size="40" id="title" />
<p>
<label for="body">Body:</label>
<textarea name="body" rows = "10" cols="60" id="body"></textarea>
</p>
<p>
<label for="author">Author:</label>
<input type="text" name="author" size="40" id="author"/>
</p>
<p><input type="submit" value="Submit New Post"/></p>
</form>
</div>
</body>
</html>

一切正常,除了它会接受半填表格的条目

对不起,长代码.... 任何帮助将不胜感激

【问题讨论】:

  • 与您的问题无关,但您可以像这样在一个电话中调用多个助手:$this-&gt;load-&gt;helper(array('form', 'url'));
  • 我建议自动加载这些助手(在 autoload.php 文件中),这样你就可以在任何地方使用它而无需调用它
  • 另外,最好使用 而不是 = 因为有些服务器不支持它

标签: php validation forms codeigniter


【解决方案1】:

您希望自己的表单发布。现在它正在跳过验证。

您所有的验证函数都在 index 方法中。 在 myBlog_view.php 中更改这一行:

&lt;?=form_open('myBlog/myBlog_insert');?&gt;

到:

&lt;?=form_open('myBlog');?&gt;

然后你需要在验证之后调用插入方法,所以在你的控制器中,在这一行之前:$this-&gt;load-&gt;view('formSuccess_view');

您需要添加以下内容:

$this-&gt;myBlog_insert();

看看这是否有效。

【讨论】:

  • 如果表单没有发布到自己,你能不使用 $this->form_validation->run() 吗?
猜你喜欢
  • 2015-02-26
  • 2014-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多