Передача данных из базы данных в библиотеку календарей CodeIgniter - PullRequest
1 голос
/ 01 декабря 2011

Отказ от ответственности: я новичок в веб-разработке

Пока: я передавал данные первичного ключа из таблицы базы данных MySQL в поле id = "" элемента списка библиотеки классов календаря, которыйотображается в календаре при создании, и я также передаю другое значение, связанное со строкой соответствующего первичного ключа, в элемент списка.

Сценарий: мне нужно передать другое значение изта же самая соответствующая строка первичного ключа в class = "" элемента списка, и я ударил стену.Мне может понадобиться создать новую функцию в моем модале, или сделать что-то в контроллере, где генерируется указанный календарь, или я могу полностью пропустить что-то совершенно простое.Несмотря на это, я мог бы использовать очень ценную помощь.Большое спасибо!

PS Пожалуйста, дайте мне знать, если вам нужна дополнительная информация, чтобы выручить меня.Еще раз спасибо!Вы все замечательны!

Модель:

class Events_model extends crud_model {

    public function __construct()
    {
        parent::__construct();

        $this->pk = 'id';
        $this->table_name = 'events';
    }

    public function get_events_for_calendar($user_id, $year = FALSE, $month = FALSE)
    {

        if ( ! $year )
        {
            $year = date("Y");
        }

        if ( ! $month )
        {
            $month = date("m");
        }

        $this->db->where("user_id", $user_id);
        $events = parent::get_all();

        $cal_events = array();

        foreach ($events as $e)
        {
            if ( date("Y", $e->date) == $year && date("m", $e->date) == $month)
            {       
                $day = intval( date("d", $e->date));

                //Swap out to change between displaying type or title of events listed -lrussell810

                //$cal_events[$day][$e->id] = $e->type;
                $cal_events[$day][$e->id] = $e->title;
            }
        }
        return $cal_events;
    }

Контроллер:

$this->load->library('calendar', $config);

        $title['title'] = 'Planner';

        $data = $this->events->get_events_for_calendar($this->end_user->id, $this->uri->segment(4), $this->uri->segment(5));

        $calendar['calendar'] = $this->calendar->generate($this->uri->segment(4), $this->uri->segment(5), $data);

        $this->load->view('public/head_view', $title);
        $this->load->view('user/header_view');
        $this->load->view('user/planner_view', $calendar);
        $this->load->view('user/footer_view');

Библиотека календаря:

// If more than one event on the same day
                      if (is_array($data[$day]))
                      {
                        $several_events = '';
                        foreach ($data[$day] as $key => $value)
                        {
                          $several_events .= '<li class="" id="'.$key.'">'.$value.'</li>';
                        }
                        $out .= str_replace('{day}', $day, str_replace('{content}', $several_events, $temp));
                      }

Другая информация библиотеки календаря:

// --------------------------------------------------------------------

    /**
     * Initialize the user preferences
     *
     * Accepts an associative array as input, containing display preferences
     *
     * @access  public
     * @param   array   config preferences
     * @return  void
     */
    function initialize($config = array())
    {
        foreach ($config as $key => $val)
        {
            if (isset($this->$key))
            {
                $this->$key = $val;
            }
        }
    }

1 Ответ

4 голосов
/ 01 декабря 2011

Если я правильно понял, вы хотите добавить «больше» к вашему событию, когда оно визуально выводится в виде html, поэтому вы добавляете ссылки на pk в качестве идентификаторов (отсюда и мой комментарий выше).ассоциативный массив для каждого события, например, так:

    $cal_events = array();

    foreach ($events as $e)
    {
        if ( date("Y", $e->date) == $year && date("m", $e->date) == $month)
        {       
            $day = intval( date("d", $e->date));

            //just made up examples below
            $cal_events[$day][$e->id]['class'] = $e->class;
            $cal_events[$day][$e->id]['type'] = $e->type;
            $cal_events[$day][$e->id]['id'] = $e->title; 
        }
    }
    return $cal_events;

Затем вы будете ссылаться на этот массив в библиотеке календарей следующим образом:

// If more than one event on the same day
if (is_array($data[$day])){
    $several_events = '';
    foreach ($data[$day] as $key => $value)
    {
        $several_events .= '<li class="'.$value['class'].'" id="'.$value['id'].'">'.$value['type'].'</li>';
    }
    $out .= str_replace('{day}', $day, str_replace('{content}', $several_events, $temp));
}

Надеюсь, это то, что вы ищете.*

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...