Комментарии 19
Спасибо, но не подскажите, зачем вы это делаете?
Я например возвращаю $q->result() или $q->row()
if ($Q- > num_rows() > 0){
foreach ($Q- > result_array() as $row){
$data[] = $row;
}
Я например возвращаю $q->result() или $q->row()
if ($Q- > num_rows() > 0){
foreach ($Q- > result_array() as $row){
$data[] = $row;
}
Проверяет количество возвратившихся строк. Если их больше 0, то выполняем foreach. Если этой проверки не дулеть, то foreach будет вызывать ошибку, если у вас не будет записей в блоге.
Шорошо бы еще во View перед выводом записей проверить пуст ли массив $entries.
Зачем в модели делать foreach и проверять на пустоту?
По моему этого вполне достаточно сделать во вьюшке или я не прав?
По моему этого вполне достаточно сделать во вьюшке или я не прав?
ну это кому как удобнее, Я на пример проверки все старюсь выносить из вьюшек
$data[‘entries’] = $this-> MBlog-> getAllEntries();
В переменную $entries будет записан массив данных, т.к. функция getAllEntries() возвращяет записи в виде массива.
На стороне Модели должны проводиться все манипуляции по выборке, проверке, подготовке данных для передачи во View. Во View мы их просто выводим.
Но вам всё равно придётся сделать проверку на пустоту либо во вьюшке, либо в контроллере.
На самом деле меня больше беспокоит foreach, зачем он?
Проверили мы что он не пустой, зачем гнать всё это через foreach, не проще вернуть $q->result()?
На самом деле меня больше беспокоит foreach, зачем он?
Проверили мы что он не пустой, зачем гнать всё это через foreach, не проще вернуть $q->result()?
Действительно можно и так сделать.
Не путайте $q->result() с $q->result_array()? первый возвращает объект, второй массив…
но все равно
foreach ($Q- > result_array() as $row){
$data[] = $row;
можно заменить на $data = $Q- > result_array();
но все равно
foreach ($Q- > result_array() as $row){
$data[] = $row;
можно заменить на $data = $Q- > result_array();
Я не путаю, просто дал совет, как я использую.
2. Записи блога из базы данных будут помещены в $data[‘navlist’] с помощью Модели MBlog.
$data[‘entries’] = $this-> MBlog-> getAllEntries();
поправте…
Если не затруднит перенесите топик в блог CodeIgniter. Заранее спасибо :)
Здравствуйте!
Я понимаю, что пост старый, но прошу его поправить. Рисунок схемы Модель-Вид-Контроллер несколько неточен, как минимум он противоречит вашему же высказыванию
"… Допустим пользователь заходит на нашу страницу. В этот момент Контроллер вызывает Модель, которая возвращает последние 10 записей. Далее данные передаются из Контроллера в Представление, которое выводит страницу пользователю..."
На схеме не видно, что данные передаются из Контроллера в Представление, не показано, что Контроллер хоть как-то связан с Представлением.
Зато видно, что Модель непосредственно взаимодействует с Представлением, что, согласно принципу MVC, недопустимо.
Даю ссылку на более правильную схему, которая соответсвует вашей статье
i.piccy.info/i4/d7/5f/2c11106d06e13cec1372c9338d53.png
Просьба заменить рисунок, чтобы не вводить MVC-новичков в заблуждение.
Я понимаю, что пост старый, но прошу его поправить. Рисунок схемы Модель-Вид-Контроллер несколько неточен, как минимум он противоречит вашему же высказыванию
"… Допустим пользователь заходит на нашу страницу. В этот момент Контроллер вызывает Модель, которая возвращает последние 10 записей. Далее данные передаются из Контроллера в Представление, которое выводит страницу пользователю..."
На схеме не видно, что данные передаются из Контроллера в Представление, не показано, что Контроллер хоть как-то связан с Представлением.
Зато видно, что Модель непосредственно взаимодействует с Представлением, что, согласно принципу MVC, недопустимо.
Даю ссылку на более правильную схему, которая соответсвует вашей статье
i.piccy.info/i4/d7/5f/2c11106d06e13cec1372c9338d53.png
Просьба заменить рисунок, чтобы не вводить MVC-новичков в заблуждение.
Спасибо. Поправил.
Вообще-то, Модель напрямую влияет на предстваление.
С сокращении MVC, Controller — это Front Controller, т.е. получает и обрабатывает запросы пользователя, а модель формирует представление.
С сокращении MVC, Controller — это Front Controller, т.е. получает и обрабатывает запросы пользователя, а модель формирует представление.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
MVC на примере CodeIgniter