2016-06-06 5 views
0

Я редактирую сайт, основанный на moodle, и мне нужно создать двойную регистрационную форму. Первый уже установлен (для школ), мне нужно создать еще один для частного пользователя. Какой был бы лучший способ сделать это? Стоит ли копировать основные файлы регистрации (signup.php и signup_form.php), а затем вносить туда изменения? Действительно спасибоДвойная регистрационная форма в moodle

ответ

0

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

https://docs.moodle.org/dev/Authentication_plugins

Может скопировать код отсюда /auth/email в /auth/newname - замена электронной почты с NewName в коде.

Возможно расширение класса? так что-то подобное в /auth/newname/auth.php

defined('MOODLE_INTERNAL') || die(); 

require_once($CFG->dirroot . '/auth/email/auth.php'); 

class auth_plugin_newname extends auth_plugin_email { 

    ... 

    function can_signup() { 
     return true; 
    } 

    ... 

Затем скопируйте /login/signup_form.php в /auth/newname/signup_form.php

Следующий бит я не слишком уверен, но, возможно, потребуется изменить /login/signup.php

Вокруг линий

if (empty($CFG->registerauth)) { 
    print_error('notlocalisederrormessage', 'error', '', 'Sorry, you may not use this page.'); 
} 
$authplugin = get_auth_plugin($CFG->registerauth); 

Изменение к

if (optional_param('newname', false, PARAM_BOOL)) { 
    $authplugin = get_auth_plugin('newname'); 
} else { 
    if (empty($CFG->registerauth)) { 
     print_error('notlocalisederrormessage', 'error', '', 'Sorry, you may not use this page.'); 
    } 
    $authplugin = get_auth_plugin($CFG->registerauth); 
} 

Тогда для частных регистраций использовать

http://www.yoursite.com/login/signup.php?newname=1

Заменить 'NEWNAME' с именем вашего нового подключаемого модуля аутентификации.

+0

Хорошо, это работает, но мне нужно изменить поля с помощью частной учетной записи пользователя, я думаю, что мне нужно скопировать даже signup.php и изменить код там. Я попробую и дам вам знать, спасибо! –

+0

oh, если вы расширили 'auth_plugin_email', затем скопируйте и измените' function user_signup' с '/ auth/email/auth.php' –

+0

Хорошо, спасибо. Теперь я удвоил форму и создал новые элементы формы с помощью функции addElement(). Как я могу получить значения этих элементов и сохранить их в отдельной таблице базы данных? Может быть, что-то с $ form -> get_data()? На самом деле, спасибо, я новичок в разработке moodle, и я пытаюсь понять структуру ... –

Смежные вопросы