2011-01-14 8 views
0

私はしかし、私はコントローラを介して、モデルからデータを渡したい、私は罰金呼び出すことができます(アプリケーションの\ライブラリ内の)カスタムライブラリを持っている:コントローラで :CodeIgniterのライブラリへのparamsを渡す

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

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

$menu = new MyMenu; 

$data['menu'] = $menu->ShowMenu($MenuData); 
MYMENUライブラリで

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; 

私はそれぞれのために未定義の変数のエラーや不正な引数を取得していますが。 大変助かりました!

+0

私たちは毎日$かを確認する必要が診断することですforeachの "無効な引数"。それは配列を期待しています – Ross

+0

Ross - 配列を返す関数があります: function getDaily(){ $ q = $ this-> db-> get_where( 'bookmarks'、array( 'tags' => 'daily' )、10)。 if($ q-> num_rows()> 0){ foreach($ q-> result()$行として){ $ data [] = $ row; } return $ data; } – dmag

答えて

1

あなたが内側($MenuData['daily'])第二レベルのアレイのうちの1つを通過しようとし、その後、関数を多次元配列($MenuData)を通過していますMD配列を最初のレベルを参照せずにforeachループに渡します。代わりに:

foreach($daily as $row) : 

試してみてください。

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

またはあなたのforeachループが第二レベルの配列を保持する変数を宣言する前に:

​​
+0

うん!それだった - とてもありがとう – dmag

1

申し訳ありませんが、それはちょうど私かもしれません。この.=は、変数にすでに見つかっている文字列の最後に連結しますが、これまでは使用していませんでした。したがって、この行べき:

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

はである:

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

ありがとうございましたMatt - これは、コード「// More Code here」に以前使用していたので、これは問題ではありません。全体を投稿したくなかった。回答ありがとう – dmag

関連する問題