2017-10-01 7 views
0

私はで登録しています。登録&ログイン CI3のシステム。

$autoload['libraries'] = array('database', 'form_validation', 'user_agent', 'session'); 

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

はまだ私はこのエラーを取得する:私はautoload.phpにライブラリやヘルパーをロードした

class Signin extends CI_Controller { 

public function index() 
{ 
    $this->load->view('signin'); 
} 

public function signin() 
{ 
    $this->form_validation->set_rules('email', 'Email', 'required'); 
    $this->form_validation->set_rules('password', 'Password', 'required'); 
    if ($this->form_validation->run()) 
    { 
     echo "You are in"; 
    } 
    else 
    { 
     echo validation_errors(); 
    } 
} 
} 

私のコントローラは、CIのユーザーガイドに従って行われています。

Message: Undefined property: Signin::$load 
Filename: controllers/Signin.php 

なぜですか?ありがとうございました!

+0

コントローラにコンストラクタを追加しましたか? –

答えて

0

あなただけのコンストラクタを追加する必要がありますを参照してくださいあなたのSigninコントローラーで

class Signin extends CI_Controller { 

    public function __construct() 
    { 
     parent::__construct(); 
    } 

    public function index() 
    { 
     $this->load->view('signin'); 
    } 

    public function signin() 
    { 
     $this->form_validation->set_rules('email', 'Email', 'required'); 
     $this->form_validation->set_rules('password', 'Password', 'required'); 
     if ($this->form_validation->run()) 
     { 
      echo "You are in"; 
     } 
     else 
     { 
      echo validation_errors(); 
     } 
    } 
} 
2

あなたが機能signin(同じ名前)を使用することができるようにするために、あなたのコントローラSigninのコンストラクタを必要とする:

class Signin extends CI_Controller{ 
    public function __construct() 
    { 
     parent::__construct(); 
    } 
    public function signin() 
    { 
     // your code 
    } 
    public function index() 
    { 
     $this->load->view('signin'); 
    } 
} 

は、CI-マニュアルについてreserved method names

+0

なぜですか?説明は何ですか?それは私のコードにどのように適合しますか? –

+0

parent :: __ construct(); CI_Controllerクラス内のすべてのものへのアクセスが必要な場合に必要です。このページがないと、このページで認識されているコードだけが存在します。したがって、 'load'関数などはありません。 –

0

問題は、クラスと同じ名前のクラスメソッドがあることです。

ドキュメント毎の

You should also never have a method named identically to its class name. If you do, and there is no __construct() method in the same class, then your e.g. Index::index() method will be executed as a class constructor! This is a PHP4 backwards-compatibility feature.

ので修正はクラスに__constructメソッドを追加し、何か他のもの

  • に次の

    1. 変化の一public function signin()の定義を行うことです。
    2. 変更するクラスの名前

    私は最初のソリューションを使用します。

    public function sign_in() 
    { 
    
  • 関連する問題