CodeIgniter: отправка массива из модели в программу просмотра - PullRequest
0 голосов
/ 23 мая 2011

Как отправить массив из модели в файл вида?

Справочная информация: У меня есть форма, в которую можно вставить имя (View-file). Затем я передаю эту информацию в мой файл контроллера, который проверяет, есть ли информация, добавленная в форму. Если нет, то появляется сообщение об ошибке и сообщается пользователю, что имена должны быть добавлены. Если имена были добавлены в форму, контроллер передает информацию модели, которая проверяет базу данных, если какое-либо из имен уже существует в базе данных. Если некоторые или все имена уже существуют в базе данных, они передаются в массив . Если имя НЕ добавлено в базу данных, файл модели добавляет их в базу данных.

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

User add:
Mark
Sophie
Dan
Josh

Already in database:
Mark 
Dan

Array then contains (should be output to the user):
Mark
Dan

Одним из решений, которое я считал возможным, было добавление оператора возврата в функцию в файле модели. И восстановите массив следующим образом:

$data['nameArray'] = $this->model_name->add_name();

Но это не сработает, потому что если пользователь пропустил добавление информации в форму, будет показан оператор else, и $ data ['nameArray'] не будет определен. Которые приводят к сообщению об ошибке «Неопределенная переменная» при попытке вывести его в файл представления.

Ответы [ 2 ]

2 голосов
/ 23 мая 2011

Нетрудно передать массивы от модели к контроллеру или представлению в codeigniter. Передайте их, как любую другую переменную.

Ваша идея, похоже, должна работать. Если вы хотите предотвратить ошибку «неопределенная переменная», вы можете использовать isset() в своем представлении следующим образом:

<?php if isset($nameArray) echo $nameArray; ?>

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

В качестве альтернативы вы можете сделать, как сказал atno , и добавить проверку в самом контроллере:

$data['nameArray'] = $this->model_name->add_name();
if ( ! $data['nameArray']) $data['nameArray'] = array();

Есть и другие способы сделать это, какой из них лучше, зависит от вашей ситуации и предпочтений.

1 голос
/ 23 мая 2011

перед добавлением результата модели в массив, проверьте, является ли результат пустым, если пусто, добавьте значение, подобное $data['nameArray'] = "N/A", в противном случае, если оно не пустое $data['nameArray'] = $this->model_name->add_name();, тогда в вашем представлении проверьте, является ли $ nameArray массивом, и продолжайте использовать этот массив еще отображать строку N / A. Вот как я это делаю

если пользователь пропустил добавление информации в форму если ваши пользователи должны ввести это значение, вы должны заставить их сделать это, проверьте библиотеку Form_Validation для codeigniter.

...