it-swarm.asia

برمجياً تعيين القيمة الافتراضية لحقل

في Drupal 6 ، يمكننا استخدام PHP لتعيين القيم الافتراضية ، ولكن لا يمكن استخدام نفس الرمز مع Drupal 7 .

أحاول القيام بذلك من خلال hook_form_alter() ، لكن الرمز لا يعمل.

function my_form_alter(&$form, &$form_state, $form_id) {
  dsm($form);

  switch($form_id) {
    case 'accounts_node_form':
      $form["field_accounts"]["und"]['#default_value'] = $default;
      // …
      break;
  }
}
10
giorgio79

بافتراض أن وظيفة تغيير النموذج تعمل بالفعل (والتي يمكنك تأكيدها من خلال هذا الاستدعاء لـ dsm()) ، هناك في الواقع مستويان إضافيان من المصفوفة تحتاج إلى الانتقال إليهما للوصول إلى عنصر الحقل:

$form["field_accounts"][LANGUAGE_NONE][0]['value']['#default_value'] = $default;

في Drupal 7 لديك مجموعة من القيم لكل لغة تمت ترجمة الحقل إليها (بحيث يمكن تلبية الحقول ذات الأصالة المتعددة/غير المحدودة)) ، وتحت كل واحدة منها مصفوفة لمختلف أعمدة الحقول المختلفة. في معظم الحالات ، سيكون هذا "القيمة" ولكن ليس دائمًا (على سبيل المثال ، يحتوي حقل الصورة على عمود معرف ملف أو عمود بديل وما إلى ذلك)

امل ان يساعد

17
Clive

هذا صحيح:

function my_form_alter(&$form, &$form_state, $form_id) {
  dsm($form);

  switch($form_id) {
    case 'accounts_node_form':
      $form["field_accounts"][LANGUAGE_NONE][0]['value']['#default_value'] = $default;
      // …
      break;
  }
}
0
keopx

هذا يعمل بشكل جيد:

function my_form_alter(&$form, &$form_state, $form_id) {
  dsm($form);
  switch($form_id) {
    case 'accounts_node_form':
      $form["field_accounts"]["und"][0]['value']['#default_value']=$default;
      break;
  }
}
0
keopx