0

我有问题要问你。我尝试添加到我的页面日历和此日历中的一些事件。我知道如何在页面中加载日历,但我现在不知道如何在每个页面上自动加载此日历。

控制器:

<?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

4

2 回答 2

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();
于 2012-11-08T20:22:00.533 回答
-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适用于所有页面的功能,例如页眉和页脚。

希望这可以帮助!

于 2012-11-08T20:13:49.920 回答