Как заполнить текстовую область значением базы данных перед загрузкой формы в drupal 7? - PullRequest
0 голосов
/ 21 марта 2012

Я использовал функцию hook_form_FORM_ID_alter () , чтобы изменить форму menu_edit_menu для добавления нескольких полей.Я сохранил значения из этих полей в таблице, когда выполняется действие отправки.Теперь мне нужно, чтобы конкретная запись формы снова загружалась для редактирования.Поля должны быть заполнены данными в базе данных перед загрузкой формы.Может кто-нибудь сказать мне, как это можно сделать.

Я пытался использовать функцию 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);

}

Я получаю сообщение об ошибке, что моя спецификация поля неверна, но я не могу выяснить проблему там.

Ответы [ 2 ]

1 голос
/ 22 марта 2012

Это слишком длинно для комментария, поэтому я добавлю его здесь:

Единственная ошибка, которую вы получили в своем запросе, заключается в том, что первый аргумент, переданный функции 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();
1 голос
/ 21 марта 2012

Вы получаете данные из своей базы данных в функции формы и помещаете их как default_value

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

ты это имел ввиду?

...