2013-04-20 42 views
1

我在MySQL表中名爲「privacy」= enum(「Public」,「Private」,「Custom」)的MySQL表中有一個枚舉數據類型字段。我想告訴我的編輯視圖這個領域一樣,Cakephp處理MySQL枚舉

<?php 
    echo $this->Form->input(
       "privacy",array(
        'label'=>'', 
        'type'=>'select' 
      ) 
     ); 
    ?> 

我試圖this鏈路解決方案,但發現兩個主要問題吧。

1.)我需要將可用選項傳遞給控制器​​視圖,並需要將它們分配給視圖文件中的字段。

2.)它將數組作爲數字索引傳遞,因此表單提交視圖將傳遞值的索引而不是其值。因此,如果我選擇隱私選項作爲「自定義」,則視圖將以2傳遞,最終不會保存在數據庫中,導致其枚舉並且2不是有效的選項。

我認爲cakePHP足夠聰明,可以評估提供的字段是枚舉,它將從數據庫獲取所有可用選項並自行處理該字段。

在cakephp中有任何選項可以解決我的問題,還是需要將硬編碼關聯數組傳遞給我的視圖?

回答

1

這裏是一些代碼對你非常有用的選擇性別作爲枚舉數據類型

鑑於文件

<?php 
       echo $form->input('gender', array(
         'type'=>'select', 
         'options'=>array("male" => "Male", "female" => "Female") 
        ) 
       ); 

和控制器,你只需要初始化

$this->data['Profile']['gender'] = $sel_gender['Profile']['gender']; 

讓利我知道如果我可以幫助你更多...

+0

感謝您的回答,但我知道如何創建通過傳遞數組從數組中選擇框,但我試圖從枚舉數據類型創建選擇框而不傳遞數組。 – Nehal 2013-04-20 10:52:30

+0

但是,當你問上面你也想編輯時間默認選擇用戶上面第二個代碼它對你有用 – liyakat 2013-04-20 10:54:04

+0

雖然它是枚舉數據類型我認爲cakephp將自己處理可用選項和默認選定的值。我認爲cakephp會獲取枚舉值並將它們填充到選擇框中。如果我需要傳遞一個硬編碼數組,定義數據類型枚舉的含義是什麼。 – Nehal 2013-04-20 11:05:56