背景情報
CIの新しいコピーをインストールし、ウェルカムコントローラーを変更してURLヘルパーを含め、メソッド_base_url
_を呼び出せるようにしました。次に、このメソッドを_home.php
_から呼び出そうとします
問題:次のエラーメッセージが表示されます。
_Message: Undefined property: Welcome::$load
Filename: controllers/welcome.php
_
コード:
これが私のウェルカムコントローラーの外観です。
_class Welcome extends CI_Controller {
public function __construct()
{
$this->load->helper('url');
}
public function index()
{
$this->load->view('home');
}
}
_
ビューは次のようになります。
_<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=Edge"/>
<meta charset="utf-8">
<meta name="viewport" content="width = device-width">
<meta name="description" content="">
<!-- Le styles -->
<title>test site</title>
<script>
var BASEPATH = "<?php echo base_url(); ?>";
</script>
<link href="<?php echo base_url('assets/css/bootstrap.min.css')?>" rel="stylesheet">
<link href="<?php echo base_url('assets/css/navbar.css')?>" rel="stylesheet">
</head>
_
システムがコントローラーのコンストラクターの行で終了し、ライブラリをロードしようとしています...
これまでに行ったこと:
次のようにconfig/autoload.phpにurlライブラリを含めようとしました:
$autoload['helper'] = array('url');
しかし、まだエラーが発生します。助言がありますか?
ありがとう。
スクリーンショット:
あなたは重要なことを忘れました。
class Welcome extends CI_Controller {
public function __construct()
{
parent::__construct();
$this->load->helper('url'); //Loading url helper
}
public function index()
{
$this->load->view('home'); //Loading home view
}
}
parent::__construct
。そうしないと、独自のコントローラーで__constructをオーバーライドすると、コントローラーはその抽象レイヤーを継承しません。
__construct
を上書きしない限り、問題はありません。オーバーライドした場合にのみ発生します。 WelcomeクラスはCI_Controller
を拡張している(ただし__construct
オーバーライドがある)場合でも、Welcomeクラスは空(継承なし)であるため、load
機能はありません。