2012-04-29 15 views
1

のプロパティを取得しようとすると私はCodeIgniterのを使用して開始している、PHPやDBからデータをフェッチすることで、動的にUIを構築しようとしているときに問題に直面:CodeIgniterの - 重大度:通知メッセージ:非オブジェクト

要件: 私はDBから情報を読み込んで、親子のリストを動的に作成する必要があります。 私は2つのテーブルadmin_menuとadmin_menu_itemを持っています。管理メニューには親メニューオプションがあり、admin_menu_itemには各親の詳細オプションが含まれています。 admin_menu_itemには親のIDを格納するAD_MENU_ID列があり、階層構造を与えています。

するコントローラ:

クラスホームここCI_Controller {

public function index() 
{ 
    $this->load->helper('url'); 
    $this->load->helper('array'); 
$this->load->model('Menu'); 
$header_data['base_url'] = base_url(); 
    $data['menu'] = $this->Menu->get_admin_menu_data(); 

    $data['menu_item'] = array(); 
foreach($data['menu'] as $row){ 
array_push($data['menu_item'], 
    $this->Menu->get_admin_menu_item_data($row->ad_menu_id)); 
} 
      $this->load->view('homepage/header'); 
    $this->load->view('homepage/admin_menu',$data); 
} 

}

を拡張コード

マイモデルの構造である:

class Menu extends CI_Model{ 

function __construct() 
{ 
    // Call the Model constructor 
    parent::__construct(); 
} 

function get_admin_menu_data() 
{ 
    $this->db->select('ad_menu_id,ad_menu_name'); 
    $query = $this->db->get('admin_menu'); 
    return $query->result(); 
} 

function get_admin_menu_item_data($menu_id) 
{ 
    $query = $this->db->query("SELECT ad_menu_item_name FROM ADMIN_MENU_ITEM WHERE AD_MENU_ID = " . $menu_id); 

    if($query->num_rows() > 0){ 
     return $query->result(); 
     } 
} 

}

私は私の見解で$ data変数を使用する場合、私は親が値を持っていないと私はエラー

にPHPのエラーを以下の取得余分なアイテムが得られ、空白の親行を取得遭遇した 重要度:注意 メッセージ:非オブジェクトのプロパティを取得しようとし ファイル名:ホームページ/ admin_menu.php 行番号:基本的に私は親要素にアクセスし、私の視線である9

マイビュー:

 echo "<ul class=\"accordion\" id=\"accordion-1\">"; 
     foreach ($menu as $key => $value) { 
     print "<li class=\"dcjq-current-parent\">"; //add li tag 
     print "<a href=\"#\">" . $value->ad_menu_name . "</a>\n"; 

     print "<ul>";     
     foreach($menu_item as $key_item => $value_item){ 
       print "<li><a href=\"#\">"; 
       print $value_item->ad_menu_item_name . "</a></li>\n"; 
       $action_type = ''; 
     }//end of menu item for each 
     print "</ul></li>\n"; 
     }//end of menu for each 
     print "</ul>"; 

長い記事のため、申し訳ありませんが、私は本当にここに立ち往生していますし、これが間違っているかを把握することはできませんか?

更新:

私は最終的にそれがモデルとビューにコードを変更NYを動作させることができました。この問題は、オブジェクト内のオブジェクトが階層を複雑にする原因となっていました。 最終的な解決策は、ビュー内でただ1つのデータベース呼び出しと処理データを作成することでした。 私に協力して解決策を指導してくれてありがとうございました。

+0

あなたは何を得るのですかとき、あなたのビューであなた 'のvar_dump($ MENU_ITEM)'? – rgin

答えて

1

ビューの$ menu変数に2つの異なるオブジェクトがあり、これは推奨されません。私の提案は、ビューの2番目のパラメータとしてそれらの1つを送信することです。

'$data['menu']['menu_item']'のデータをforeachループの各繰り返しで上書きする方法に注意してください。コントローラで

鑑み
$data['menu_item'] = array(); 
foreach($data['menu'] as $row){ 
    array_push($data['menu_item'], 
     $this->Menu->get_admin_menu_item_data($row->ad_menu_id)); 
} 

foreach ($menu_item as $key => $value) { 
     print "<li class=\"dcjq-current-parent\">"; //add li tag 
     print "<a href=\"#\">" . $value->ad_menu_name . "</a>\n"; 
} 

EDIT: は、溶液は、SQLクエリをマージした

SELECT ADMIN_MENU_ITEM 
.ad_menu_item_name FROM ADMIN_MENU_ITEM JOIN admin_menu ON ADMIN_MENU_ITEM.AD_MENU_ID = admin_menu.ad_menu_id 
+0

ビューに2つのパラメータを送信するにはどうすればよいですか? – Neel

+0

投稿にビューコードを追加しました。あなたのソリューションは、私が配列を上書きしていたコントローラーの部分で動作しますが、ビュー内でこの構造にアクセスする方法がわかりません。 – Neel

+0

別の変数を追加してください。 $ data変数のすべてのセルは、ビュー内の変数です。 $ data ['menu_item']と呼ばれる$ data変数のセルをコントローラでどのように作成したかに注目してください。ビューでは、変数は$ menu_itemと呼ばれます。 –

1

i'amは同じ問題を抱えています エラーを修正する方法メッセージ:非objecのプロパティを取得しようとしていますt URLから「 - 」を挿入する場合。あなたのartikel_model.php

function get_by_id($id){ 
    $query = $this->db->get_where('tbl_artikel', array('id' => $id)); 
    if ($query->num_rows() > 0){ 
    return $query->row(); 
    }else{ 
    print_r('No Found Artikel'); 
    error_reporting(0); 
    } 
} 

ますprint_r( 'いいえFOUNDのArtikel')を編集し修正する

。 < - URLが見つからない場合このメッセージを表示

error_reporting(0); < - エラーレポートヒデする

./eoc

関連する問題