привет всем! Помогите!
Делаю валидацию формы
<?php
$form['privatemsg']['submit']['#validate'][] = 'pm_send_to_all_validate';
?>
В этой функции делаю $form_state['validate_built_message'] = $message;
В функции отправки
<?php
$form['privatemsg']['submit']['#submit'][] = 'pm_send_to_all_send';
?>
Пытаюсь извлечь $form_state['validate_built_message']
НО ТАМ ПУСТО!
Комментарии
$form_state['values']['validate_built_message'] - отменили уже - а мужики то и не знают ...
Так тоже самое.
Код с формой в студию!
<?php
/**
* Implementation of hook_form_alter().
*/
function pm_send_to_all_form_alter(&$form, $form_state, $form_id) {
switch ($form_id) {
case 'privatemsg_new':
// при инициализации формы, добавляем заполнитель
$form['validate_built_message'] = array(
'#type' => 'value',
'#value' => array(),
);
$form['privatemsg']['recipient']['#required'] = FALSE;
$form['select_whom']['#type'] = 'checkbox';
$form['select_whom']['#title'] = 'Select for send message to all users.';
$form['select_whom']['#weight'] = -20;
unset($form['privatemsg']['submit']['#validate']);
$form['privatemsg']['submit']['#validate'][] = 'pm_send_to_all_validate';
break;
}
}
?>
<?php
// The actual message that is being sent, we create this during validation and pass to submit to send out.
$trimed_body = trim(truncate_utf8(strip_tags($message['body']), 50, TRUE, TRUE));
$validated = _privatemsg_validate_message($message, TRUE);
/**
* Form validation
*/
function pm_send_to_all_validate($form, $form_state) {
$message = $form_state['values'];
$message['timestamp'] = time();
// Avoid subjects which only consist of a space as these can not be clicked.
$message['subject'] = trim($message['subject']);
if (empty($message['subject']) && !empty($trimed_body)) {
$message['subject'] = $trimed_body;
}
// Only parse the user string for a new thread.
if (!isset($message['thread_id'])) {
if ($form_state['values']['select_whom'] == 1) {
$result = db_query("SELECT uid FROM {users_roles} WHERE rid = 2");
while($row = db_fetch_array($result)) {
$response = db_fetch_array(db_query("SELECT name FROM {users} WHERE uid = %d", $row['uid']));
$recipients .= $response['name'] .', ';
}
}
else {
$recipients = $message['recipient'];
}
list($message['recipients'], $invalid) = _pm_send_to_all_parse_userstring($recipients);
}
else {
// Load participants.
$message['recipients'] = _privatemsg_load_thread_participants($message['thread_id']);
// Remove author.
if (isset($message['recipients'][$message['author']->uid]) && count($message['recipients']) > 1) {
unset($message['recipients'][$message['author']->uid]);
}
}
foreach ($validated['messages'] as $type => $text) {
drupal_set_message($text, $type);
}
// ТУТ ВОТ НИ КАК НЕ ХОЧЕТ ОТПРАВЛЯТЬ!
form_set_value($form['validate_built_message'], $message, $form_state);
$form_state['validate_built_message'] = $message;
if (!empty($invalid)) {
drupal_set_message(t('The following users will not receive this private message: @invalid', array('@invalid' => implode(", ", $invalid))), 'error');
}
} ?>
Убрать
Все ровно не передает.
Если в валидаторе вызвать то есть, но не передает в отправку