Drupal 7, вставьте user_profile_form на страницу

Я попытался вставить user_profile_form на страницу. код довольно прост:

глобальный $пользователь; module_load_include('inc', 'user', 'user.pages'); print drupal_render(drupal_get_form('user_profile_form', $user, 'account'));

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

«Предупреждение: call_user_func_array() [function.call-user-func-array]: ожидается, что первый аргумент будет действительным обратным вызовом, «user_profile_form» был задан в drupal_retrive_form()»

Любые идеи, большое спасибо


person boringtao    schedule 04.07.2011    source источник


Ответы (2)


вместо этого вам нужно использовать form_load_include() module_load_include для загрузки/сборки формы, и вам нужно передать аргументы внутри $form_state.

код, который вы ищете, выглядит так:

    $form_id = 'user_profile_form';
    $form_state = array();
    //passing arguments to form.
    $form_state['build_info']['args'] = array($account, 'account');

    form_load_include($form_state, 'inc', 'user', 'user.pages');

    $form = drupal_build_form($form_id, $form_state);
person m.khamash    schedule 09.02.2013
comment
Чтобы создать переменную $account, используйте следующий код global $user; $account = user_build_content($user); - person Rajesh Ashok Kumar; 08.03.2013
comment
Это работает, но я получаю: Примечание: попытка получить свойство не-объекта в user_account_form() (строка 1019 из /var/www/modules/user/user.module) - person Felix Eve; 15.10.2013

Чтобы предотвратить уведомление или предупреждение:

Попытка получить свойство не-объекта в user_account_form() (строка 1019 из /var/www/modules/user/user.module)

Измените последние две строки на:

<?php 
    $output_form = drupal_get_form($form_id); 
    print render($output_form); 
?>
person Paul Sharman    schedule 20.09.2016