我向你提问。 我尝试添加到我的页面日历和此日历中的一些事件。我知道如何在页面中加载日历,但我现在不知道如何在每个页面上自动加载这个日历。
控制器:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Calendar extends CI_Controller {
function index()
{
$data = array(
3 => 'Polska - Anglia',
);
$this->load->library('calendar');
$vars['calendar'] = $this->calendar->generate('', '', $data);
$this->load->view('main/calendar', $vars);
}
}
并且在视图中我打电话:
<?php echo $calendar;?>
我使用CodeIgniter 2.1.3
答案 0 :(得分:2)
不是为日历创建控制器,而是创建库类,然后将其添加到自动加载配置文件
class MyCalendar{
public function get()
{
$CI =& get_instance();
$data = array(
3 => 'Polska - Anglia',
);
$CI->load->library('calendar');
return $CI->calendar->generate('', '', $data);
}
}
将此库添加到自动加载文件,然后您可以使用此语句在任何地方调用它。
$data['calendar'] = $this->MyCalendar->get();
答案 1 :(得分:-1)
您可以通过更改application/config/autoload.php
文件来自动加载库。
查找:
$autoload['libraries'] = array();
替换为:
$autoload['libraries'] = array('calendar');
要在所有网页上加载相同的日历,我建议在application/core
文件夹中构建父控制器。
abstract class BaseController extends CI_Controller
{
protected $data;
public function __construct()
{
parent::__construct();
$this->data = array();
$calendarData = array(
3 => 'Polska - Anglia'
);
$this->data['calendar'] = $this->calendar->generate('', '', $calendarData);
}
}
然后,您可以在所有控制器上扩展BaseController
类。
class Calendar extends BaseController {
function index()
{
$this->load->view('main/calendar', $this->data);
}
}
请务必始终使用$this->data
构建您班级的受保护成员。
最后,您的BaseController
将不会自动加载,您可能不希望在任何地方都包含它。我建议你在自动加载或配置文件的末尾添加以下方法。
/**
* Extra autoload function. Loads core classes automatically.
* @param type $class The class to load.
*/
function __autoload($class)
{
if (strpos($class, 'CI_') !== 0)
{
if (file_exists($file = APPPATH . 'core/' . $class . EXT))
{
include $file;
}
}
}
这将允许您自动加载application/core
文件夹中的所有课程。这个解决方案似乎很复杂,但一旦设置完毕。您可以为BaseController
添加适用于所有页面的功能,例如页眉和页脚内容。
希望这有帮助!