Переместить массив в переменную $ data для передачи в представления - PullRequest
0 голосов
/ 09 июля 2011

Я использую CI, и для каждой главной страницы (например, содержимого) я загружаю определенный файл CSS в конструктор, используя:

$this->load->vars(array('add_css'=>array('contents')));

В своих представлениях я проверяю, существует ли массив add_cssили нет, если да, я загружаю content.css.Теперь в моем файле контроллера (в данном случае contents.php) у меня есть много методов, и хотя все они всегда будут загружать дополнительный content.css, определенные методы также будут иметь (если есть) свой собственный add_css, например, когдаЯ на рассмотрении метода, я хочу загрузить дополнительные rating.css.То, что я сделал, было:

$data['add_css'] = array('rating');

Но это не работает, потому что rating.css перезаписывает переменные в конструкторе.

Так есть ли способ передать массив?Я пробовал array_push ($ data ['add_css'], 'rating'), но он не работает.

Спасибо

Ответы [ 2 ]

0 голосов
/ 10 июля 2011

Самый изящный способ, которым я могу думать, был бы следующим:
1 . В вашем контроллере или, если у вас есть MY_Controller (это намного лучше), добавьте новое защищенное (поэтому оно доступно для всех контроллеров) свойство, которое будет хранить все загруженные CSS-файлы.

protected $_addCss = array();

2 . Добавьте новый метод для установки новых CSS-файлов в этот массив:

protected function _addCssFile($file)
{
    $this->_addCss[] = $file;
    return $this; //So you can chain it when adding but not necessary
}

3 . Новый метод для ручной загрузки всех добавленных CSS-файлов.

protected function _loadCssFiles()
{
        //Load the vars then reset the property to empty array again
    $this->load->vars(array('add_css' => $this->_addCss));
    $this->_addCss = array();
    return $this;
}

4 . В вашем контроллере приложения вы можете использовать его так:

public function __construct()
{
        parent::__construct();
        $this->_addCssFile('contents');
}

public function test()
{
        //Chain the methods so you can add additional css files
    $this->_addCssFile('contents')
        ->_addCssFile('rating')
        ->_loadCssFiles()
        ->load->view('test');
}

5 . На ваш взгляд:

echo '<pre>';
print_r($add_css);
echo '
';
Result:
Array
(
    [0] => contents
    [1] => contents
    [2] => rating
)
0 голосов
/ 09 июля 2011

У меня была похожая проблема.Чтение содержимого массива, запись в другой массив, добавление в него новой информации, перезапись второго массива данными.

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