2

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

これは私のコードです:

view\pagesにあるlogin.php

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

controllers/にある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");
        
        
    }
    }

config/にあるroutes.php

$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」属性の場所を指していません。フォームヘルパーとフォーム検証ライブラリをそこにロードする必要があるのはなぜですか?誰かがこれの流れを説明できますか?

4

2 に答える 2

10

基本的に問題は、フォームでビューを呼び出していたコントローラーに含まれている必要があるということでした

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

フォームアクションによって呼び出されているコントローラーではありません

于 2012-06-20T13:09:54.593 に答える
3

フォルダーautoload.php内のファイルでフォーム ヘルパーを読み込んでみてください。config

これは良い習慣です:

$autoload['helper'] = array('url','text','form');
于 2012-06-11T12:45:31.267 に答える