У меня есть ситуация, когда я хочу, чтобы набор пользователей (сотрудников) мог создавать узел, но вместо этого заменить идентификатор пользователя (user ID) на профиль пользователя в настоящее время отображается.Drupal 6: Изменение uid поданного узла
Другими словами, у меня есть блок, который вызывает форму для типа содержимого. Если сотрудник (uid = 20) переходит на страницу клиентов (uid = 105) и заполняет форму, я хочу, чтобы uid, связанный с формой, был клиентом (105), а не сотрудником.
Я использую Arg (1), чтобы захватить UID Клиента - вот то, что у меня есть ..
<?php
function addSR_form_service_request_node_form_alter(&$form, $form_state) {
if (arg(0) == 'user' && is_numeric(arg(1))) {
$form['#submit'][] = 'addSR_submit_function';
}
}
function addSR_submit_function($form, $form_state) {
$account = user_load(arg(1));
$form_state['values']['uid'] = $account->uid;
$form_state['values']['name'] = $account->name;
}
?>
форма загружается в блок, но когда представляется, все еще показывает UID сотрудника , Я не хочу использовать hook_form_alter, потому что я не хочу изменять фактическую форму, потому что клиенты могут заполнить форму напрямую, в этом случае я не хочу изменять форму вообще.
Я тоже стыдно, что я ставлю это в блоке, но я не мог придумать способ, чтобы поставить это в модуле, поэтому любые предложения о том, что было бы также иметь в виду ...
Спасибо Googletorp, это был очень краткий ответ. Я установил блок формы и создал модуль с именем addSR (замененный пони). Модуль formblock отображает форму, но она все еще передает исходный uid. Есть ли способ проверить, является ли обработчик даже вызванным? --- Я опубликовал обновленный снипп ... – tpow
Самый быстрый способ - вызвать drupal_set_message ('some text'); где-то. если он вызывается, он будет печатать текст в области сообщений, где отображаются эра проверки достоверности и т. д. Если вы хотите сделать серьезную отладку, вы должны взглянуть на модуль devel или взглянуть на drupal для Firebug. Компонент firebug addon/drupal, который также имеет некоторые хорошие инструменты отладки. – googletorp
Хорошо, я добавил несколько «drupal_set_message», используя переменную uid & name, и все настроено правильно (вызывает вызовы), но uid не изменился.Есть ли способ, который мы можем задействовать в обработке формы после того, как она обычно устанавливает uid, как раз перед отправкой в базу данных? – tpow