AdminMenu
プロジェクトの管理者用のメニューを作成するために使用しているクラスがあります。クラスは次のとおりです。
class AdminMenu{
public $menu = array(
'Groups and Statuses' => 'groups',
'Members Management' => 'members',
'Book Manager' => 'books',
'Activity Log' => 'activities',
'Quiz Maker' => 'quiz',
'Other' => 'other'
);
public function AdminMenu() {
$html = "<nav><ul><li><input type='text' id='search' placeholder='Search' /></li>";
foreach($this->menu as $text => $link){
$html .= '<li><a href="'. site_url(array('admin', $link)) .'">'. $text .'</a></li>';
}
$html .= '</ul></nav>';
echo $html;
}
}
ご覧のとおり、コンストラクター関数はデータをエコーアウトしていますが、これは問題ありません。そのため、管理メニューが必要な場合は、電話new AdminMenu();
をかけるだけで見栄えがします。
問題は、CodeIgniter がクラスをlibraries
ディレクトリに保持し、次のように呼び出すことを推奨していることです$this->load->library('adminMenu');
。問題は、何らかの理由でここでコンストラクター関数を呼び出すため、それをロードしてから新しい を作成するAdminMenu()
と、コンストラクターが合計 2 回呼び出されるため、2 つのメニューが表示されることです。
ライブラリのロードはコンストラクターを呼び出すことを意図していますか?ここで間違っていますか? 出力用に別の関数を作成する必要がありましたか? または、そのままにしてlibraries
、含まれているクラスのように呼び出すことはできますか?
ありがとう!