【问题标题】:codeigniter displaying form_open显示 form_open 的 codeigniter
【发布时间】:2012-06-14 08:36:39
【问题描述】:

我正在尝试学习 codeigniter,但由于某种原因,我不能做最简单的事情。

基本上我是在登录页面上创建一个表单。但我得到了

致命错误:在第 5 行的 A:\work\codeigniter\ci\application\views\pages\login.php 中调用未定义函数 validation_errors()

如果我注释掉 validation_errors 行,我会得到

致命错误:在第 5 行的 A:\work\codeigniter\ci\application\views\pages\login.php 中调用未定义函数 form_open() ...

错误信息

( ! ) Fatal error: Call to undefined function validation_errors() in A:\work\codeigniter\ci\application\views\pages\login.php on line 3
Call Stack
#   Time    Memory  Function    Location
1   0.0004  697328  {main}( )   ..\index.php:0
2   0.0010  790176  require_once( 'A:\work\codeigniter\ci\system\core\CodeIgniter.php' )    ..\index.php:202
3   0.0135  2313080 call_user_func_array ( )    ..\CodeIgniter.php:359
4   0.0135  2313160 Pages->view( )  ..\CodeIgniter.php:359
5   0.0135  2313288 CI_Loader->view( )  ..\pages.php:9
6   0.0135  2314232 CI_Loader->_ci_load( )  ..\Loader.php:419
7   0.0138  2363392 include( 'A:\work\codeigniter\ci\application\views\pages\login.php' )   ..\Loader.php:833

这是我的代码:

login.php 位于 view\pages

<?php echo validation_errors(); ?>

<?php echo form_open('user/login') ?>

    <label for="Id"> User Id</label>
    <input type="input" name="Id" /> <br/>
    
    <label for="Password">User Password</label>
    <input type="input" name="Password" />
    <br/>
    
    <input type="submit" name="submit" value="log in" />
    
</form>

user.php 位于控制器\

<?php
    class User extends CI_controller{
    public function login()
    {
        $this->load->helper('form');
        $this->load->library('form_validation');
        
        //i have a file views/pages/main.php which just says "this is main"
        $this->load->view('pages/main'); 
    }
    }

pages.php 位于控制器/

<?php

    class Pages extends CI_Controller{
    public function view($page){
        if(!isset($page)||!file_exists("application/views/pages/$page.php")){
        show_404();
        }
        
        $this->load->view("pages/$page");
        
        
    }
    }

routes.php 位于 config/

$route['default_controller'] = "pages/view";
$route['(:any)']="pages/view/$1";
$route['404_override'] = '';

这是我认为会发生的事情,如果我错了,请纠正我。 form_open('user/login') 使 html 表单元素的“action”指向位于控制器中的类“user”的方法“login”。

另外,我用谷歌搜索了很多,几乎所有遇到此错误的人都得到了它,因为他们没有这样做

$this->load->helper('form');
$this->load->library('form_validation');

另外,我没有得到 form_open 中的字符串指向 html 表单元素中“action”属性的位置。为什么需要在那里加载表单助手和表单验证库?有人可以解释一下这个流程吗?

【问题讨论】:

  • 加载了form helper和form_validation库后,你之前提到的错误是否仍然存在?

标签: php forms codeigniter


【解决方案1】:

尝试在config 文件夹内的autoload.php 文件中加载表单助手。

这将是一个很好的做法:

$autoload['helper'] = array('url','text','form');

【讨论】:

    【解决方案2】:

    基本上问题在于使用表单调用视图的控制器应该包含

    $this->load->helper('form');
    $this->load->library('form_validation');
    

    而不是表单操作调用的控制器

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-09
      • 2011-07-14
      • 2016-04-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多