Автор Тема: Въпрос за Codeigniter  (Прочетена 729 пъти)

0 Потребители и 1 Гост преглежда(т) тази тема.

FANatik

  • Newbie
  • *
  • Благодарности
  • -Казани: 9
  • -Получени: 0
  • Публикации: 41
    • Doccy BG
Въпрос за Codeigniter
« -: 16 Април 2016, 13:50:58 »
Имам следния проблем :

Създал съм си библиотека Категории

Код: PHP
  1. class Categories {
  2.  
  3.     protected $CI;
  4.  
  5.     public function __construct() {
  6.         $this->CI = & get_instance();
  7.     }
  8.  
  9.     public function get_news_cat_name_by_id($id) {
  10.         $this->CI->load->model('categories_model');
  11.         $this->CI->load->model('news_model');
  12.         return $this->CI->categories_model->get_news_cat_name_by_id($this->CI->news_model->get_news_item($id)->category);
  13.     }
  14.  
  15. }

която искам да използвам на различни места в кода ми и затова съм я autoload-нал.

Проблема възниква когато вкарам във foreach loop въпросният get_news_cat_name_by_id метод. При механично въвеждане на някакво id връща името на дадената категория, но при въвеждане на динамична стойност от цикъла, крашва и ми връща  Trying to get property of non-object. Къде е възможно да е проблема .. ?

Това ми е modela в Categories_model-а

Код: PHP
  1. public function get_news_cat_name_by_id($id) {
  2.        
  3.         $this->db->where('cat_id', $id);
  4.         $query = $this->db->get('cats_news');
  5.  
  6.         return $query->row()->cat_name;
  7.     }
« Последна редакция: 16 Април 2016, 13:55:54 от FANatik »

Avalanche

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 65
  • -Получени: 269
  • Публикации: 2595
  • meow
Re: Въпрос за Codeigniter
« Отговор #1 -: 16 Април 2016, 14:13:46 »
Здрасти,

А как изглежда самия loop? Имената са ти доста описателни (може би повече отколкото трябва, но това няма значение), но изглежда, че имаш два с еднакви имена от различни класове, аз бих може би бих преименувал единия да не се бъркаш в бъдеще.

"Trying to get property of non-object" най-вероятно идва от последната част на това парче код: $this->CI->news_model->get_news_item($id)->category. Най-вероятно се опитваш да достъпиш "category" свойство, от ненамерен ред. Я постни и как изглежда get_news_item
"Компютрите не правят каквото искаме, а каквото им кажем." Ако разбереш какво значи това няма да имаш големи проблеми, нито с никоя ОС, нито език, или софтуер.
Аз не съм програмист между другото!

FANatik

  • Newbie
  • *
  • Благодарности
  • -Казани: 9
  • -Получени: 0
  • Публикации: 41
    • Doccy BG
Re: Въпрос за Codeigniter
« Отговор #2 -: 16 Април 2016, 14:18:04 »
Код: PHP
  1. public function get_news_item($id) {
  2.  
  3.         $this->db->where('id', $id);
  4.         $query = $this->db->get('news');
  5.  
  6.         return $query->row();
  7.     }

Пробвам го сякак и с различни имена просто когато влезе в цикъла не става номера .. сякаш самият метод се самоограничава да не се Loopva .. не знам дали самият codeigniter не го прави тоя номер да не могат да се loop-ват методи от библиотеки

Самият foreach

Код: PHP
  1. $i = 0;
  2. ?><div class='col-md-9'><?php
  3. foreach ($news as $news_item) {
  4.     ?>
  5.         <!--    <div class="col-md-9">-->
  6.         <div class="panel panel-<?php echo $colours[$i++ % 2]; ?>">
  7.             <div class="panel-heading">
  8.                 #<?php echo $i; ?> <b><?php echo character_limiter($news_item->title, 30); ?></b>
  9.                 <a class="pull-right" href="<?php echo base_url() . 'news/index/' . $news_item->id ?>">Прочети повече</a>
  10.             </div>
  11.             <div class="panel-body">
  12.                 <?php
  13.                 if ($news_item->img) {
  14.                     echo "<img src='" . $news_item->img . "' width='300px' class='img-thumbnail pull-left' style='margin: 0px 10px 10px 0px;'>";
  15.                 }
  16.                 ?>
  17.                 <?php echo character_limiter($news_item->description, 500); ?><br/>
  18.             </div>
  19.             <div class="panel-footer">
  20.                 <?php
  21.                 echo "Добавена на " . $news_item->date_added;
  22.                 echo ", от <b>" . $this->ion_auth->user($news_item->by_id)->row()->username . "</b>";
  23.                 ?>
  24.                 <div class='pull-right'>
  25.                     <?php
  26.                     echo "Категория : " . $this->categories->get_news_cat_name_by_id($news_item->category);
  27.                     ?>
  28.                 </div>
  29.             </div>
  30.         </div>
  31.         <!--    </div>-->
  32.         <?php
  33.         if ($i == 6) {
  34.             break;
  35.         }
  36.     }
  37.     ?>
« Последна редакция: 16 Април 2016, 14:24:56 от FANatik »

FANatik

  • Newbie
  • *
  • Благодарности
  • -Казани: 9
  • -Получени: 0
  • Публикации: 41
    • Doccy BG
Re: Въпрос за Codeigniter
« Отговор #3 -: 16 Април 2016, 14:26:13 »
Оправих се извинявам се много .. Просто не си следя логиката и правя глупости .. Подавам id-то на категорията, а не на самият запис от DB. Всичко сработи, благодаря много  :)