Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: MVC
Форумы портала PHP.SU » PHP » Программирование на PHP » MVC

Страниц (1): [1]
 

1. juramaj - 22 Декабря, 2014 - 21:01:41 - перейти к сообщению
Кто знает, как мне с модели передать переменную о предупреждении например "Нет данной статьи" Вот код который находится в модели. Если у меня всё что возвращает метод модели в контроллере складывается в $data
PHP:
скопировать код в буфер обмена
  1. public function get_station()
  2.         {
  3.             $get_id = trim(strip_tags($_GET['id']));
  4.                 $result_st = $this->db->query("SELECT * FROM `station` WHERE `id` = '$get_id'");
  5.                 if ($result_st)
  6.                 {
  7.                         return $result_st;
  8.                 }
  9.                 else
  10.                 {
  11.                     $q = 'ДАННОЙ СТАТЬИ НЕ ОБНАРУЖЕНО!';
  12.                         return $q;
  13.                 }
  14.                 $this->db->close();
  15.         }
2. teddy - 22 Декабря, 2014 - 21:08:18 - перейти к сообщению
juramaj пишет:
Кто знает, как мне с модели передать переменную о предупреждении например "Нет данной статьи"

Не нужно это передать из модели.
Нужно опираться на результат которую вернет модель.
К примеру если метод модели вернул false, значит записей нет и плясать дальше от этого.

juramaj пишет:
сё что возвращает метод модели в контроллере складывается в $data

Передайте эту $data во view. А при выводе можно уже сделать приблизительно такую весч:

PHP:
скопировать код в буфер обмена
  1. if(!$data) {
  2.     echo 'Нечего показывать';
  3. }else{
  4.    
  5.     foreach($data as $key=>$value) {
  6.         //some output
  7.     }
  8. }
3. juramaj - 22 Декабря, 2014 - 21:13:32 - перейти к сообщению
тоесть на сколько я понял, у вьювере уже делать дальнейшую проверку?
4. teddy - 22 Декабря, 2014 - 22:22:44 - перейти к сообщению
Да. Не нужно заводить лишние переменные. У Вас ведь уже есть 1 переменная которая условно говоря содержит либо данные либо false и передается во вью.
Так вот при выводе делаем проверочку если переменная не false то показываем данные иначе показываем кукиш
5. Bio man - 22 Декабря, 2014 - 22:26:22 - перейти к сообщению
Не вьювере а вьюхе или представлении.
Какая логика в MVC? Контроллер запрашивает модель, вызывает рендеринг шаблона и передает модель вьюхе.
Либо делать проверку во вьюхе.
Либо, проверку делать в контроллере.

Если кода в условном операторе немного и всего одно такое условие, то можно прямо во вьюхе.
Если условия повтаряются несколько раз, то лучше перенести это условие уровнем выше - в контроллер, и основываясь на этом условии рендерить нужную вьюху.
6. teddy - 22 Декабря, 2014 - 22:40:09 - перейти к сообщению
Одна поправочка к моему сообщению, если это что то из разряда "если не нашлось то надо отдать 404" тогда проверку нужно делать не во вью а в контроллере что бы сразу отдать 404 до вывода
7. juramaj - 25 Декабря, 2014 - 12:33:55 - перейти к сообщению
подскажите, как мне передать вместо false например "Нет такой статьи"
PHP:
скопировать код в буфер обмена
  1. public function get_station()
  2.         {
  3.             $get_id = trim(strip_tags($_GET['id']));
  4.            // $result = $this->db->query("SELECT * FROM `station`");
  5.                 //$all_station = $result->num_rows;
  6.                 $result_st = $this->db->query("SELECT * FROM `station` WHERE `id` = '$get_id'");
  7.                 if ($result_st)
  8.                 {
  9.                         return $result_st;
  10.                 }
  11.                 else
  12.                 {
  13.                    
  14.                         return false;
  15.                 }
  16.                
  17.                 $this->db->close();  
  18.         }
8. Sail - 25 Декабря, 2014 - 12:56:07 - перейти к сообщению
juramaj!
1. Для чего возвращать из функции фразу, если при обработке возвращённого функцией значения ($X !== FALSE, или $X === FALSE) можно выполнить всё, что нужно?
2. К чему в теле функции вызов $this->db->close(), если он ни при каких условиях не выполняется?
9. juramaj - 25 Декабря, 2014 - 13:07:41 - перейти к сообщению
Я что то уже запутался: Кто пишет что нужно всё обрабатывать в моделе а в вьювере полько показывать что пришло с модели через контроллер, а кто пишет что можно и во вьювере делать обработки. Так как же всё таки прав?
10. caballero - 25 Декабря, 2014 - 13:50:23 - перейти к сообщению
каждый прав по своему - релизации могут быть самыми разными кому как удобно.
тем более на MVC свет клином не сошелся.

 

Powered by ExBB FM 1.0 RC1