2011-05-22 65 views
0

如何從模型向視圖文件發送數組?CodeIgniter:從模型發送數組到查看器

背景: 我有一個窗體,名稱可以放在(視圖文件)。然後我將這些信息傳遞給我的控制器文件,該文件檢查是否有信息添加到表單中。如果沒有錯誤消息顯示並告訴用戶必須添加名稱。如果名稱已經添加到控制器的表單中,那麼將信息傳遞給模型,該模型檢查數據庫中是否存在任何名稱。如果數據庫中已經存在一些或全部名稱,則將它們傳遞給陣列。如果名稱未添加到數據庫中,則模型文件將它們添加到數據庫中。

我想獲取已存在於數據庫中的名稱數組並將其輸出給用戶。所以這就是爲什麼我需要數據庫中已有名稱的數組。

User add: 
Mark 
Sophie 
Dan 
Josh 

Already in database: 
Mark 
Dan 

Array then contains (should be output to the user): 
Mark 
Dan 

我認爲可能的一種解決方案是向模型文件中的函數添加return語句。和retrive數組是這樣的:

$data['nameArray'] = $this->model_name->add_name(); 

但是這是行不通的,因爲如果用戶錯過了將信息添加到形式else語句將顯示和$數據[「nameArray」]不會被定義。當試圖在視圖文件中輸出時,會導致錯誤消息「未定義變量」。

回答

1

添加模型結果到數組檢查如果結果是空的,如果爲空增加值像其他$data['nameArray'] = "N/A"如果它不是那麼空$data['nameArray'] = $this->model_name->add_name();在視圖中檢查是否$ nameArray是陣列和使用該陣列還繼續前顯示字符串N/A。這就是IM如何做

如果用戶錯過了將信息添加到形式如果您的用戶必須輸入該值則必須強制他們做,檢查Form_Validation庫笨。

2

將數組從模型傳遞到控制器或在codeigniter中查看並不困難。像其他變量一樣傳遞它們。

你的想法似乎應該工作。如果要防止「未定義的變量」錯誤,您可以在您的視圖中使用isset()像這樣:

<?php if isset($nameArray) echo $nameArray; ?> 

,如果它已經被你的模型返回,因爲這隻會呼應的名稱數組。

或者你可以做的ATNO說,並在控制器本身添加一個檢查:

$data['nameArray'] = $this->model_name->add_name(); 
if (! $data['nameArray']) $data['nameArray'] = array(); 

還有其他的方法來做到這一點爲好,哪個是最好的取決於你的實際情況和喜好。

+0

但我該如何傳遞變量?當從控制器傳遞給觀察者時,我使用下面的代碼: \t \t $ data ['text'] =「Dettaärtesttext。「; \t \t \t \t \t $ \t這 - >負載>視圖( '標題',$ page_info); \t \t $這 - >負載>視圖( 'my_view',$數據); 但我不想從我的模型加載視圖,我只是不想傳遞在if語句中定義的變量,如果它是正確的,那麼傳遞變量來查看。 – Fredrik 2011-05-23 11:23:44

+1

@Fredrik - 我不明白 - 通常你可以從控制器訪問模型方法,然後使用$ data數組將結果傳遞給視圖。從你描述的這個看起來是你在做什麼?我描述的不需要從視圖中加載模型,但是從控制器調用它。 – jisaacstone 2011-05-23 19:23:12

相關問題