php, почему базовый супер глобальный сбой? - PullRequest
0 голосов
/ 02 октября 2011

Я использую глобальные переменные для совместного использования переменных между функциями, подобными этим

<?php
$whatyear;
$whatfirstname;
$whatlastname;
function mycustom_user_register_submit($form, &$form_state)
{
            $GLOBALS["whatyear"]=$form_state['values']['yearofstudy'];
            $GLOBALS["whatfirstname"]=$form_state['values']['firstname'];
            $GLOBALS["whatlastname"]=$form_state['values']['lastname'];
}
function course_registration_user_insert(&$edit, $account, $category)
{
            $newuserid=$account->uid;
            $yearofstudy=$GLOBALS["whatyear"];
            $fname=$GLOBALS["whatfirstname"];
            $lname=$GLOBALS["whatlastname"];
                        //now use vars
                        drupal_set_message('dear '.$fname.' '.$lname.' ,'.'account uid is '.$account->uid); 
}

Но переменные

fname, lname, yearofstudy

являютсяшокирующе пустой!пожалуйста, помогите мне понять, почему.я получаю ошибки, такие как

Notice: Undefined index: whatyear in course_registration_user_insert() (line 110 of C:\wamp\www\drupal-7.1\sites\all\modules\course_registration\course_registration.module).

1 Ответ

1 голос
/ 02 октября 2011

Попробуйте использовать глобальные переменные следующим образом:

<?php
function mycustom_user_register_submit($form, &$form_state)
{
    global $whatyear;
    global $whatfirstname;
    global $whatlastname;
    $whatyear=$form_state['values']['yearofstudy'];
    $whatfirstname=$form_state['values']['firstname'];
    $whatlastname=$form_state['values']['lastname'];
}
function course_registration_user_insert(&$edit, $account, $category)
{
    global $whatyear;
    global $whatfirstname;
    global $whatlastname;
    $newuserid=$account->uid;
    $yearofstudy=$whatyear;
    $fname=$whatfirstname;
    $lname=$whatlastname;
    //now use vars
    drupal_set_message('dear '.$fname.' '.$lname.' ,'.'account uid is '.$account->uid); 
}
?>

Если это не сработает, убедитесь, что эти функции вызываются в одном и том же экземпляре php в правильном порядке.Если первый вызывается на одной странице, а затем вызывается insert на другой странице, будет открыта новая копия php, и вы потеряете переменные окружения.

...