Remember me - добавить в свою форму авторизации

Главные вкладки

Аватар пользователя RayB RayB 24 августа 2010 в 5:52

Есть такой модуль "Remember me", он добавляет чекбокс «Запомнить меня» к форме входа. Но у меня своя форма входа, вот как бы в нее вставить этот чекбокс. Может кто подскажет код, который можно вставить в свою форму?

Комментарии

Аватар пользователя Full_acсess Full_acсess 24 августа 2010 в 6:27

по идее вам не надо вставлять код в свою форму, а посмотреть как модуль "Remember me" вставляет чекбокс в стандартную форму и немного допилить его

Аватар пользователя Stutzer Stutzer 24 августа 2010 в 7:26

Своя форма у вас написана с использованием Form API или в виде сырого HTML?
Если первое, то все решается просто - используйте drupal_get_form в своем модуле, создающем кастомную форму входа.

Аватар пользователя RayB RayB 24 августа 2010 в 7:35

я уж не помню где подсмотрел это решение, форма делается через block-user-0.tpl.php

<?php<div id="block-user-auth" class="clear-block block block-<?php print $block->module ?>">

<div id="content">

                    <form id="auth_form" action="" method="POST">

                                    <input name="name" type="text" value="<?php print t('LName'?>" onFocus="this.value = &quot;&quot;;" id="auth_login" size="12" maxlength="120"/>

                                    <input type="password" name="pass" value="<?php print t('LPassword'?>" onFocus="this.value = &quot;&quot;;" id="auth_password" size="12" maxlength="120"/>
                                     <span class="enter"><a href="" onClick="getElementById('auth_form').submit(); return false;"><?php print t('Enter'?></a>  </span>

                              <div id="auth_registration">
                                    <a href="http://sushifan.ru/?q=user/password"><?php print t('Forgot password?'?></a> / <a href="/user/register"><?php print t('LRegister'?></a>
                                    </div>
                                    <input type="hidden" name="form_build_id" id="form-<?php print drupal_get_token('user_login_block'); ?>" value="form-<?php print drupal_get_token('user_login_block'); ?>" /><br />
<input type="hidden" name="form_id" id="edit-user-login-block" value="user_login_block" />

                    </form>
                </div>
                </div>?>

и в template.php

<?phpfunction get_user_login_form() {
  $form_id = 'user_login';
  $form = array();
  $form['name'] = array(
    '#type' => 'textfield',
    '#maxlength' => USERNAME_MAX_LENGTH,
    '#required' => TRUE,
    '#attributes' => array('tabindex' => '1'),
  );
  $form['pass'] = array(
    '#type' => 'password',
    '#required' => TRUE,
    '#attributes' => array('tabindex' => '2'),
  );
  $form['submit'] = array(
    '#type' => 'submit',
    '#value' => t('Log in'),
    '#weight' => 2,
    '#attributes' => array('tabindex' => '3')
  );
  $form['#validate'] = user_login_default_validators();
  $form['#build_id'] = sprintf('form-%s', md5(uniqid(mt_rand(), TRUE)));
  $form_state = array();
  drupal_prepare_form($form_id, $form, $form_state);
  drupal_process_form($form_id, $form, $form_state);
  $out = new stdClass;
  $out->form_start =
    sprintf("<form method='post' accept-charset='UTF-8' action='%s'>",
    url('user/login'));
  $out->form_end = "</form>";
  $out->name = drupal_render($form['name']);
  $out->pass = drupal_render($form['pass']);
  $out->submit =
    drupal_render($form['form_id']) .
    drupal_render($form['form_build_id']) .
    drupal_render($form['submit']);
  return $out;
}?>
Аватар пользователя Stutzer Stutzer 24 августа 2010 в 7:48

как-то все это очень неправильно.
Вам нужно создать свой модуль, который будет альтерить форму логина нужным вам образом (я так понимаю, вас только внешний вид не устроил)
И голочку «запомнить меня» прикручивать не придется — сама встанет. И интеграция с другими модулями будет обеспечена (например, с LoginToboggan)