كيف يمكنني الحصول على قيم متعددة تؤدي إلى تشغيل # حالات واجهة برمجة تطبيقات النموذج؟
قل على سبيل المثال ، أردت أن يكون هذا الحقل مرئيًا ليس فقط إذا كانت القيمة 5 (تعمل حاليًا أدناه) ، ولكن أردت أيضًا جعل الحقل مرئيًا إذا كانت القيم 3 أو 4 أو 5.
'#states' => array(
'visible' => array(
':input[name="field_star_rating"]' => array('value' => t('5')),
),
),
كملاحظة ، حاولت ما يلي و لا يعمل. يعمل فقط إذا كانت القيمة "4"
'#states' => array(
'visible' => array(
':input[name="field_star_rating"]' => array('value' => t('5')),
':input[name="field_star_rating"]' => array('value' => t('4')),
),
),
هذا أيضًا لا يعمل ، فهو يعمل أيضًا فقط إذا كانت القيمة '4':
'#states' => array(
'visible' => array(
':input[name="field_star_rating"]' => array('value' => t('5'), 'value' => t('4')),
),
),
إليك ما تحتاجه:
'#states' => array(
'visible' => array(
':input[name="field_star_rating"]' => array(
array('value' => t('5')),
array('value' => t('4'))
),
),
),
الطريقة الوحيدة التي يمكنني من خلالها استخدام #ajax في D7.
إليك بعض النصائح المفيدة التي كنت أتمنى لو كنت أعرفها قبل البدء.
هذه نسخة معدلة من أحد أمثلة AJAX من وحدة الأمثلة.
function plugin_autotextfields($form, &$form_state) {
$form['star_rating'] = array(
'#type' => 'select',
'#title' => t('Star Rating'),
'#options' => array('_none' => '- select -', 5 => '5 Star', 4 => '4 Star', 3 => '3 Star', 2 => '2 Star', 1 => '1 Star'),
'#ajax' => array(
'callback' => 'plugin_autotextfields_callback',
'wrapper' => 'textfields',
'effect' => 'fade',
),
);
$form['textfields'] = array(
'#title' => t("Fieldset Name"),
'#prefix' => '<div id="textfields">',
'#suffix' => '</div>',
'#type' => 'fieldset',
'#description' => t('Where the field will be placed'),
);
if (!empty($form_state['values']['star_rating']) && $form_state['values']['star_rating'] == 5) {
$form['textfields']['review'] = array(
'#type' => 'textfield',
'#title' => t('Message if 5 stars'),
);
} else if (!empty($form_state['values']['star_rating'])) {
$form['textfields']['review'] = array(
'#type' => 'textfield',
'#title' => t('Message if not 5 stars'),
);
}
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Click Me'),
);
return $form;
}
function omfg_autotextfields_callback($form, $form_state) {
return $form['textfields'];
}
آمل أن يساعد هذا شخصًا يواجه نفس المشكلة :)
$form['student_type'] = array(
'#type' => 'checkboxes',
'#options' => array(
'high_school' => t('High School'),
'undergraduate' => t('Undergraduate'),
'graduate' => t('Graduate'),
),
'#title' => t('What type of student are you?')
);
// High school information.
$form['high_school']['tests_taken'] = array(
'#type' => 'textfield',
'#title' => t('What standardized tests did you take?'),
'#states' => array(
'visible' => array( // action to take.
':input[name="student_type[high_school]"]' => array('checked' => TRUE),
':input[name="student_type[undergraduate]"]' => array('checked' => TRUE),
':input[name="student_type[graduate]"]' => array('checked' => FALSE),
),
),
);
ملاحظة. راجع وحدة الأمثلة لمزيد من الميزات "form_example/form_example_states.inc"