質問

数時間前にCodeIgniterを使い始めたところ、いくつかの問題に遭遇しました。現在、 admin.php という名前のコントローラーにある関数を呼び出そうとしています。私はヘルパーからこれにアクセスしようとしています。これをどのように適切に行うのですか?ほとんどすべてを試しましたが、次のエラーが表示されるため、何も機能していないようです:

Fatal error: Call to a member function login() on a non-object

この問題に関するヘルプは大歓迎です

役に立ちましたか?

解決

私はjimyiに同意します。ヘルパークラスとライブラリクラスは、アプリケーション内の特定のコントローラーから独立している必要があります。 「ページタイトル」がある場合たとえば、ヘルパーは、管理コントローラーの特定の動作に依存するべきではありません。管理コントローラーを持たない別のアプリケーションでページヘルパーを使用する場合はどうなりますか?または、管理コントローラに変更を加えた場合、それらの変更がヘルパーを壊さないようにする必要があります。

ヘルパー関数が管理コントローラーにある特定のビットのデータを必要とする場合、コントローラーから関数パラメーターとして渡すことができます。このように、ヘルパーはコントローラーの依存関係であり、コントローラーはヘルパーの依存関係です。

さらに、このエラーメッセージは、呼び出しているものがすべて適切にインスタンス化されていないことを意味します。だからあなたはおそらく次のようなことをしている:

$this->load();

ヘルパー内から。ただし、ヘルパーでは、

$this
は未定義です(「非オブジェクト」エラーのため)。 CodeIgniterは、コントローラーの外部からモデル、ライブラリー、およびビューをロードする方法を提供します。しかし、私が知る限り、コントローラーに対してこれを行うことはできません。ただし、上記の理由から、それで問題ありません。依存関係を導入するときは注意してください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top