Drupal Studs помогают мне с моим крючком form_alter (я почти у цели) - PullRequest
1 голос
/ 10 июня 2010

Так что я думаю, что я почти концептуально, но мне нужны некоторые недостающие указатели.

Цель состоит в том, чтобы добавить еще несколько полей в обычную форму регистрации пользователя, немного стилизовать ее, а затем отправить с сохранением дополнительных полей в таблице.

Это то, что я имею до сих пор. Может кто-нибудь дать мне последний толчок и заставить меня идти. Пожалуйста, помогите мне. Кроме того, как я могу применить некоторые незначительные стили, такие как выравнивание новых полей формы?

Большое спасибо !!!!!!!!!

 <code> function module_menu() {
$items = array();
$items['school/registration'] = array(
      'title' => 'Upgraded Registration Form',
      'page callback'    =>'module_school_register',
      'type' => MENU_CALLBACK<br>
    );</p>

<p>return $items;
}//end of the function</p>

<p>function module_school_register(){
return drupal_get_form('form_school_register');
}//end of the function</p>

<p>function module_school_form_alter(&$form, $form_state, $form_id)
{</p>

<p>dsm($form_id);</p>

<p>if ($form_id == 'user_registration_form')
   {
// modify the "#submit" form property by prepending another submit handler array
$form['#submit'] = array_merge(
      array('_module_registration_submit' => array()),
      $form['#submit']
    );</p>

<p>}
}</p>

<p>function _module_registration_submit($form_id, $form_values) {
  // store extra data in different table
}</p>

<p>function module_registration_validate($form, &$form_state)
{
$error=0;
   //Validation stuff here, set $error to true if something went wrong, or however u want to do this.  Completely up to u in how u set errors.
   if ($error)
   {
      form_set_error('new_field_name', 'AHH SOMETHING WRONG!');
   }
} 

Ответы [ 2 ]

1 голос
/ 13 июня 2010

RedBen прав, профиль контента может быть лучшим решением.

Кажется, вы добавляете второй обработчик отправки странным образом - это просто имя функции, а не массив. Вы проверили, что ваш обработчик отправки запущен?

Поскольку ссылка на обработчик представляет собой простую строку, вам просто нужно добавить ее в массив, используя

$form['#submit'][] = '_module_registration_submit'

Если вам нужно запустить его до стандартного обработчика, используйте array_unshift, чтобы поместить его в начало массива #submit.

1 голос
/ 13 июня 2010

Предлагаю вам взглянуть на модуль профиля контента, прежде чем переходить на собственное решение.

Вы определяете пользовательский тип контента (узел) для регистрации в школе, добавляете в свои поля cck и активируете его как профиль контента. В настройках профиля контента вы затем активируете его в форме регистрации пользователя. Нулевой код!

...