Получение только первого символа при доступе к переменной post - PullRequest
1 голос
/ 22 августа 2010

Обычный способ обработки вещей в Drupal - создание типа CCK, а затем создание пользовательского обработчика отправки для выполнения логики в полях CCK при отправке узла.Однако мне не удалось получить значение, когда тип поля CCK является полем Date, поскольку массив структурирован по-разному.

ОБНОВЛЕНИЕ - У Жоау Гильерме был намного более простой подход, но я все еще не мог получитьзначение даты из массива, размещенного ниже.

<code>$fromDate = $form['field_bill_start'][0]['#value'];
drupal_set_message('<pre>'. print_r($fromDate, TRUE) .'
');// Который затем печатает это.Массив ([значение] => Массив ([дата] => вт, 24.08.2010))

Затем я попытался добавить их, которые выдали ноль.Я также пробовал "#" до даты и значения.

['value']['date']

************************* Оригинальный пост **********************************

<code><?php
 function billing_form_billing_node_form_alter(&$form, &$form_state) {
  //drupal_set_message('We are hooking it!');
  $form['#submit'][] = 'billing_submit_function';
}

function billing_submit_function($form, &$form_state) {
  $fromDatePRE = array();
  $fromDatePRE[] =  $form['field_bill_start'][0]['value']['date'];
  $fromDate[] = $fromDatePRE[0]['#value']['#date'];

  drupal_set_message('<pre>'. print_r($fromDatePRE[0], TRUE) .'
');drupal_set_message ("From Date =". $ fromDate [0]);drupal_set_message ("From Date2 =". $ fromDatePRE [0]);

$ fromDate печатает первый символ "S" из сб. 21.08.2010, который является значением, которое я хочу , но мне нужно все значение.Я знаю, что это как-то связано с тем, как я получаю доступ к массиву, но не могу понять.

Это то, с чем я работаю - я добавил комментарий к значению, которое пытаюсьдоступ:

Который Yiedls:

 Array
    (
        [0] => Array
            (
                [#type] => textfield
                [#default_value] => Sat, 08/21/2010
                [#id] => edit-field-bill-start-0-value-datepicker-popup-0
                [#size] => 20
                [#maxlength] => 30
                [#attributes] => Array
                    (
                    )

                [#description] =>  Format: Sat, 08/21/2010
                [#post] => Array
                    (
                        [title] => llllllllllllll
                        [menu] => Array
                            (
                                [link_title] => 
                                [parent] => Array
                                    (
                                        [hierarchical_select] => Array
                                            (
                                                [selects] => Array
                                                    (
                                                        [0] => primary-links:0
                                                        [1] => label_1
                                                    )

                                            )

                                    )

                                [weight] => 0
                            )

                        [hs_form_build_id] => hs_form_7bf97c3c59ba2a064d6e841ae405dd30
                        [changed] => 
                        [form_build_id] => form-1f928faaa990f3809da391165d51981a
                        [form_token] => 616f6e8a7bb9c4ffc2aec65174c0817d
                        [form_id] => billing_node_form
                        [log] => 
                        [pathauto_perform_alias] => 1
                        [print_display] => 1
                        [print_display_urllist] => 1
                        [print_mail_display] => 1
                        [print_mail_display_urllist] => 1
                        [print_pdf_display] => 1
                        [print_pdf_display_urllist] => 1
                        [field_bill_start] => Array
                            (
                                [0] => Array
                                    (
                                        [value] => Array
                                            (
                                                //This is the value I need
                                                [date] => Sat, 08/21/2010
                                            )

                                    )

                            )

                        [field_bill_end] => Array
                            (
                                [0] => Array
                                    (
                                        [value] => Array
                                            (
                                                [date] => 08/25/2010
                                            )

                                    )

                            )

                        [name] => administrator
                        [date] => 
                        [status] => 1
                        [promote] => 1
                        [op] => Save
                    )

                [#programmed] => 
                [#tree] => 1
                [#parents] => Array
                    (
                        [0] => field_bill_start
                        [1] => 0
                        [2] => value
                        [3] => date
                    )

                [#array_parents] => Array
                    (
                        [0] => field_bill_start
                        [1] => 0
                        [2] => value
                        [3] => date
                    )

                [#weight] => 0
                [#processed] => 1
                [#required] => 
                [#input] => 1
                [#autocomplete_path] => 
                [#process] => Array
                    (
                        [0] => form_expand_ahah
                    )

                [#name] => field_bill_start[0][value][date]
                [#value] => Sat, 08/21/2010
                [#needs_validation] => 1
                [#defaults_loaded] => 1
                [#sorted] => 1
            )

    )

Ответы [ 4 ]

2 голосов
/ 28 августа 2010

Вы должны использовать значение, предоставленное пользователем, которое находится на $form_state;

Я тестировал с одним полем даты вместо поля даты с 2 значениями. Но это все равно должно работать нормально. Возможно, вы неправильно указали название вашего поля, но вы можете проверить значения в $form_state['values'], где вы должны найти свое поле в списке.

В любом случае код будет выглядеть примерно так:

function billing_submit_function($form, &$form_state) {
  $from_date =  $form_state['values']['field_bill_start'][0]['value'];
  $from_date_string = format_date(strtotime($from_date), 'custom', 'D d/m/Y');
  $from_date_2 =  $form_state['values']['field_bill_start'][0]['value2'];
  $from_date_string_2 = format_date(strtotime($from_date_2), 'custom', 'D d/m/Y');

  drupal_set_message("From Date = ".$from_date_string);
  drupal_set_message("From Date2 = ".$from_date_string_2);
}
1 голос
/ 24 августа 2010

Попробуйте вместо этого, я удалил свой предыдущий ответ, как только я действительно посмотрел на код и заметил, что я был далеко раньше. Кажется, создается много избыточных массивов, которые, по моему мнению, только запутывают проблему. Это работает?

$fromDate = $form[0]['#post']['field_bill_start'][0]['value']['date'];
drupal_set_message("From Date = ".$fromDate);

EDIT:

Обновлен код для повторной попытки

1 голос
/ 24 августа 2010

Я думаю, вам просто нужно напечатать $form['field_bill_start'][0]['#value'].

Обновление: печатать непосредственно $form['field_bill_start'][0]['#value'], не добавлять его в переменную или массив.

1 голос
/ 23 августа 2010

Возвращаемое значение: доступ к строке, а не к массиву.

$string = "ABCDEFG";
// This would print "A".
print $string[0];

Чтобы заметить, что обработчик отправки принимает отправленные значения из $form_state['values'], а не из $form.

...