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

カレンダーのコントローラを作成する代わりに、ライブラリ クラスを作成し、それを autoload 構成ファイルに追加します。

class MyCalendar{

public function get()
    {
        $CI =& get_instance(); 
        $data = array(
                3  => 'Polska - Anglia',
        );

        $CI->load->library('calendar');

        return $CI->calendar->generate('', '', $data);
    } 
}

このライブラリを autoload ファイルに追加すると、このステートメントを使用して任意の場所で呼び出すことができます。

$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自動ロードされないため、どこにでも含めたくないでしょう。autoload または config ファイルの最後に次のメソッドを追加することをお勧めします。

/**
 * 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 に答える