2011-01-14 14 views
0

ich eine benutzerdefinierte Bibliothek (in Anwendung \ Bibliotheken), die ich in Ordnung rufen kann, aber ich mag Daten von Modell zu übergeben, über die Steuerung: In der Steuerung:Passing Params zu einer Codeigniter Bibliothek

$MenuData['daily'] = $this->bookmarks_model->getDaily(); 

$this->load->library('MyMenu'); 

$menu = new MyMenu; 

$data['menu'] = $menu->ShowMenu($MenuData); 

In der MyMenu Bibliothek:

function ShowMenu($Params) 
{ 
$CI =& get_instance(); 
$CI->load->helper('url'); 
$CI->config->item('base_url'); 
//More Code here 
$menu .= "<li><a href='#'>Daily</a>"; 
$menu .= " <ul>"; 
foreach($daily as $row) : 
    $menu .= "<li><a href='" . $row->url . "' target='_blank'>" . $row->short_title . "</a></li>"; 
endforeach; 
$menu .= " </ul> "; 
$menu .= " </li>"; 
//More Code here 
} 
return $menu; 

aber ich bin ein undefinierten Variable Fehler und ungültige Argumente für für jeden zu bekommen. Jede Hilfe sehr geschätzt!

+0

wir müssen sehen, was täglich $ zu diagnostizieren die "ungültigen Argumente" für die foreach. Es erwartet ein Array – Ross

+0

Ross - es gibt eine Funktion, die ein Array zurückgibt: Funktion getDaily() { $ q = $ this-> db-> get_where ('Lesezeichen', Array ('Tags' => 'täglich'), 10); if ($ q-> num_rows()> 0) { foreach ($ q-> result() als $ row) { $ data [] = $ row; } Rückgabe $ Daten; } – dmag

Antwort

1

Sie passieren ein mehrdimensionales Array ($MenuData) auf die Funktion, dann eine der zweiten Ebene Arrays zu passieren versucht ($MenuData['daily']) im Innern das MD-Array an die foreach-Schleife, ohne auf die erste Ebene zu verweisen. Statt:

foreach($daily as $row) : 

Versuchen:

foreach($Params['daily'] as $row) : 

oder vor Ihrem foreach-Schleife eine Variable deklarieren die zweite Ebene Array zu halten:

$daily = $Params['daily'] 
foreach($daily as $row): 
+0

Yep! Das war es - vielen Dank – dmag

1

Tut mir leid, aber es kann nur ich sein. Diese .= bedeutet verketten am Ende der Zeichenfolge bereits in der Variablen gefunden, aber Sie haben es nicht vorher verwendet. So sollte diese Zeile:

$menu .= "<li><a href='#'>Daily</a>"; 

sein:

$menu = "<li><a href='#'>Daily</a>"; 
+0

Danke Matt - das ist nicht das Problem, wie ich es zuvor im Code '// More Code here' verwendet habe. Ich wollte nicht alles veröffentlichen. Danke für die Antwort – dmag

Verwandte Themen