Как сохранить и получить доступ к повторно используемым массивам данных в codeigniter?

Я относительно новичок в codeigniter и изо всех сил пытаюсь понять, как сохранять и получать доступ к данным с нескольких контроллеров, поэтому мне было интересно, может ли кто-нибудь здесь помочь мне понять это.

Мне нужно создать функцию внутри codeigniter, которая возвращает массив данных, чтобы я мог перейти к представлению и создать раскрывающийся список формы.

Ниже приведен код, который будет использоваться в функции

switch($type) {
case 'text':
$data = array (
                'equals'        => 'Equals',
                'notequal'      => 'Does Not Equal',
                'startswith'    => 'Starts With',
                'endswith'      => 'Ends With',
                'contains'      => 'Contains',
                'notcontain'    => 'Does Not Contain',
                );
break;

case 'numeric':

$data = array (
                        'equals'        => 'Equals',
                        'notequal'      => 'Does Not Equal',
                        'less'          => 'Less Than',
                        'greater'       => 'Greater Than',
                        'equalless'     => 'Less Than Or Equal To',
                        'equalgreater'  => 'Greater Than Or Equal To'
                        );

break;

case 'date':

$data = array (
                        'equals'        => 'Equals',
                        'notequal'      => 'Does Not Equal',
                        'before'        => 'Before',
                        'after'         => 'After',
                        'equalbefore'   => 'Before Or Equal To',
                        'equalafter'    => 'After Or Equal To'
                        );
break;
}

Затем я передам массив данных, возвращаемый этой функцией, в представление, используя его для создания раскрывающегося списка формы, используя следующий код:

echo form_dropdown('conditions', $data);

Я не уверен, нужно ли мне создавать помощника для этого или что-то еще?

Спасибо за поиск


person Paul Atkins    schedule 08.03.2011    source источник


Ответы (1)


Все еще не совсем уверен, чего вы пытаетесь достичь, но обычно в прошлом для выпадающего содержимого, которое мне нужно было использовать много раз в проекте, я буду содержать значения в помощнике.

как это...

условия_helper.php

<? if ( ! defined('BASEPATH')) exit('No direct script access allowed');

if ( ! function_exists('hotel_types_dropdown')) {

    function date_dropdown_values() {

        $data = array (
            'equals'        => 'Equals',
            'notequal'      => 'Does Not Equal',
            'before'        => 'Before',
            'after'         => 'After',
            'equalbefore'   => 'Before Or Equal To',
            'equalafter'    => 'After Or Equal To'
        );

        return $data;
    }

и вы продолжите форматировать свои различные настройки раскрывающегося списка с соответствующими именами функций.

Поэтому, как только вы добавите его в свой autoload.php или загрузите в контроллер, в котором хотите его использовать. Просто вызовите его с помощью date_dropdown_values(), и он вернет ваш массив для использования в раскрывающемся списке.

Затем в вашем контроллере...

switch($type) {
    case 'text':
        $data->dropdown_values = text_dropdown_values();
        break;

    case 'numeric':
        $data->dropdown_values = numeric_dropdown_values();
        break;

    case 'date':
        $data->dropdown_values = date_dropdown_values();
        break;
}

$this->load->view('path/to/view', $data);

И тогда на ваш взгляд

<?php echo form_dropdown('conditions', $dropdown_values); ?>
person jondavidjohn    schedule 08.03.2011
comment
Привет, спасибо, что нашли время ответить. У меня есть небольшой вопрос о вашем ответе ... будет ли мне полезно использовать «переключатель» внутри моего контроллера, а не внутри моей функции, и вызывать вспомогательную функцию с помощью $data = dropdown_values('numeric') ? - person Paul Atkins; 08.03.2011
comment
Нет, на самом деле я почти предложил это, но все это основано на вашем конкретном использовании, и я все еще немного не понимал специфики вашего приложения, если оно работает лучше для вас, дерзайте! - person jondavidjohn; 08.03.2011