2012-03-21 40 views
0

我已經使用hook_form_FORM_ID_alter()函數來改變一個menu_edit_menu的形式來添加幾個字段。我在執行提交操作時將這些字段的值存儲在表中。我現在需要的是當特定的表單條目再次被加載進行編輯時。在表單加載之前,這些字段應該填充數據庫中的數據。誰能告訴我如何做到這一點。如何在表單加載到drupal 7之前用數據庫值填充文本區域?

我試過用hook_validate()函數,但是在執行提交操作時調用這個函數,在這方面沒有用。我必須在表單呈現之前執行數據庫查詢,以使用表中的數據填充文本字段。請向我提供一些有關如何實現這一點的見解。

我與SQL SELECT查詢以及/

$query = db_select('menu_custom'); 
$query 
->fields(array('menu_name','role1','role2','role3')) 
->condition('check',1,'=') 
->conditon('title',$form_state['values']['title']) 
->execute(); 

foreach($query as $record) 
{ 
    $mname = $result ->menu_name; 
    $rl1 = $result -> role1; 
    $rl2 = $result -> role2; 
    $rl3 = $result -> role3; 
    dpm($mname." ".$rl1); 

} 

我得到的錯誤,我的領域規格是錯誤的一個問題,但我不能沒有搞清楚的問題。

回答

1

這是一個評論有點太長了,所以我會把它放在這裏:

您在您的查詢所得到的唯一錯誤是傳遞給fields()函數的第一個參數必須是名稱/字段來自的表的別名。所以你的查詢應該看起來像這樣:

$query = db_select('menu_custom') 
    ->fields('menu_custom', array('menu_name','role1','role2','role3')) 
    ->condition('check',1,'=') 
    ->conditon('title',$form_state['values']['title']) 
    ->execute(); 
+0

我還有一個問題。如何在加載之前訪問標題。當我不得不編輯表格時。標題字段的值被設置爲默認值,我需要獲取該值以在查詢中使用。我試圖通過$ form_state ['values'] ['title']來訪問它,但它沒有幫助。你能告訴我怎樣才能得到這種形式的數據。 – H4v0cCr8oR 2012-03-22 14:15:22

+0

這取決於......數據庫中的哪個位置在表單提交時保存標題? – Clive 2012-03-22 14:22:11

+0

標題存儲在menu_custom表中。當以前添加的菜單是從結構 - >菜單選項編輯的。標題應在edit_menu_edit表單加載之前提取,並在其各自的文本字段中添加role1,role2和role3的值。 – H4v0cCr8oR 2012-03-22 16:19:43

1

您的表單功能從你的數據庫中的數據,並把它們作爲DEFAULT_VALUE

$name = db_query(YOUR_SQL); 
$form['first_name'] = array(
    '#title' => t('First Name'), 
    '#type' => 'textfield', 
    '#default_value' => $name, 
); 

這是你的意思?

+0

我想嘗試你的解決方案,但我遇到了我的SQL查詢問題。 – H4v0cCr8oR 2012-03-22 11:09:13

+1

@DrupalDeveloper你的查詢應該通過'db_query',而不是'db_select'。我編輯了該效果的答案 – Clive 2012-03-22 11:27:53

+0

@Clive我在問題中添加了sql語句。你能告訴我我要去哪裏嗎? – H4v0cCr8oR 2012-03-22 11:33:41

相關問題