Добрый день. Не кидайте в меня ссаными тряпками но я чет не могу победить траблу... Имею такой метод в контроллере PHP: public function actionOnline() { $data[] = $this->model->getUserOnline(); if(empty($data[0])) { $data[] = "<div class='frame error'>А никого нет</div>"; $this->view->render('Сейчас онлайн игроков', $data); exit; }else { $this->view->render('Сейчас онлайн игроков', $data); } } Если онлайн нет пользователей, хочу выводить сообщение Если дампить $data в этом участке, то возвращает PHP: var_dump($data);die; array(0) { } Эта переменная уходит в рендер, где отрисовывается View HTML: <div class="mainContents"> <ol class="l1"> <?php foreach ($data as $user): ;?> <li><a href="/user/info?id=<?=$user['id']?>"><?=$user['login']?>[<?=$user['blvl']?>]</a> </li> <?php endforeach; ?> </ol> <div class="clear"> </div> </div> Если дампить ее до foreach, то я получаю Код (Text): NULL [LIST=1] Warning: Invalid argument supplied for foreach() in C:\OS\OSPanel\domains\dwmvc\app\views\user\online.php on line 4 [/LIST] Почему NULL То, если я передал месагу?
Убрал, ничего не поменялось... все ровно так же --- Добавлено --- а render выглядит так PHP: public function render($title, $var = []) { //Переделать в цикл if(!empty($var[0])) $data = $var[0]; else $data = null; if(!empty($var[1])) $data2 = $var[1]; else $data2 = null; if(!empty($var[2])) $data3 = $var[2]; else $data3 = null; $url = substr($_SERVER['REQUEST_URI'],1); $argArr = explode('/',$url); if(!empty($argArr[0])) $path = $argArr[0]; if(!empty($argArr[1])) $view = $argArr[1]; else $view = 'index'; $findSymbol = strpos($view, '?'); if($findSymbol == true) { $view = stristr($view, '?', true); } $content = 'app/views/'.$path.'/'.$view.'.php'; include 'app/views/'.$this->template.'.php'; } --- Добавлено --- и тут я понял почему NULL буду думать.... --- Добавлено --- Мысли в слух дают ответ. Всем спасибо! Вот решение PHP: public function actionOnline() { $data[] = $this->model->getUserOnline(); if(empty($data[0])) { $data[0] = "<div class='frame error'>А никого нет</div>"; $this->view->render('Сейчас онлайн игроков', $data); }else { $this->view->render('Сейчас онлайн игроков', $data); } } Потому что мой тупой рендер смотрит не циклом а по очереди и дает NULL если 0 элемент пуст, а так как он уже был NULL то данные встали в 1 элемент, а его уже рендер игнорит... нубас че скажешь
тут вообще ничего непонятно, что и где лежит. Я не понимаю, человеку советую убрать exit, говорит не помогло, а потом выкладываю код без него и говорит, что всё прошло и оки-доки. Бери функцию себе создай и кешируй данные, если это необходимо function online ( ) { $q = "SELECT COUNT(1) FROM `users` WHERE `online`=1"; return $q; }