Динамическая загрузка данных «модулей» в представления для каждого пользователя с одного контроллера с использованием CodeIgniter - PullRequest
0 голосов
/ 15 июня 2009

Я пытаюсь загрузить представления для набора «модулей» для пользователя, который выбрал любое количество доступных «модулей». Я могу получить название модулей или любой столбец из базы данных.

load->view($name . '_view');

Я не могу понять, как загрузить данные для представления, основываясь на имени модуля.

//Loads the rows (selected modules) I need for this user into an array
$modules['modulearr'] = $this->module_model->getModuleUser();

    for($i = 0; $i < count($modules['modulearr']); $i++){ 

            //Get the variable from the array
            $name = $modules['modulearr'][$i]->mod_name;

             //The below works.
            $this->load->view($name.'_view');

            //The below would not work. (this is the crux of my problem)
            $data = $this->$name.'_model'->get();
            $this->load->view($name.'_view', $data);
    }

Существует также проблема с загрузкой моделей в контроллер из-за того, что я не могу изменить $this->load->THIS_PART динамически.

Я новичок во всем, поэтому, возможно, есть базовая концепция, которую я не понимаю. Если бы вы могли указать мне в правильном направлении; это было бы круто. Я мог бы сделать целую кучу операторов if, но это кажется грязным. Конечно, есть лучший способ. Заранее спасибо!

Ответы [ 3 ]

0 голосов
/ 15 июня 2009

но не могу найти способ загрузить данные для представления на основе Имя модуля.

Кажется, что имя модуля определяется из строки

$name = $modules['modulearr'][$i]->mod_name;

если это работает ...

$this->load->view($name.'_view');

Может быть, вы хотите сделать это?

$data = $name.'_model'->get();

вместо $ this-> name?

Если это не сработает (я действительно не знаю, что у вас происходит), попробуйте повторить $ this-> name и убедитесь, что вывод имеет смысл, прикрепленный к _model

0 голосов
/ 15 июня 2009

Это была проблема с заглавными буквами: поля из базы данных (в виде массива)

$name = $modules['modulearr'][$i]->mod_name;

были иногда в столицах. Я исправил это с помощью

$name = strtolower($name);  
$nameMod = $name.'_model';

тогда

//it doesn't seem to like combinations of things where nameMod is below.
$data[$name.'_result'] = $this->$nameMod->get() 
$this->load->view($name.'_view', $data);

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

0 голосов
/ 15 июня 2009

может быть, вы хотели

$data = $this->$name.'_model'->get();

Вы забыли объединить строки

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