it-swarm.asia

كيفية إخفاء و / أو منع الوصول إلى الحقول في نموذج ، مثل group_audience للمجموعات العضوية

لقد كان هذا الأمر يزعجني لفترة من الوقت .. عندما أحاول إخفاء حقول مثل حقل جمهور المجموعة ، أو إعداد النشر من نموذج ، عند التحقق من صحة النموذج ، تم تعيين كل من هذين المجالين إلى قيمة فارغة ، على الرغم من أن القيمة الافتراضية كما أعلن بشكل صحيح.

حاولت استخدام Invisible ، #access ، unset hidden شيء لا يعمل! هذا أمر مزعج للغاية لأنه بالنسبة لمشروعي الحالي يمكن للمستخدمين تحرير أجزاء صغيرة فقط من ملفهم الشخصي في ذلك الوقت ، على سبيل المثال فقط العنوان أو الصورة ، لذلك إذا أخفيت جمهور المجموعة ، ينتهي الأمر بالمستخدم بطرده من المجموعات التي ينتمي إليها في كل تعديل.

انتهى بي الأمر باستخدام الرمز أدناه لإخفاء هذه الحقول مع الاحتفاظ بالمستخدم في مجموعته.

$variables['user_edit_about']['group_audience']= $temp['group_audience'];       
$variables['user_edit_about']['group_audience']['#prefix'] = '<div style="display:none;">';
$variables['user_edit_about']['group_audience']['#suffix'] = '</div>';

هل يفكر أحد في طريقة أفضل لتحقيق ذلك؟

شكر

9
silkAdmin

تعديل:

حسنا لقد اكتشفت ذلك. ضع هذا في الوحدة النمطية المخصصة الخاصة بك:

function example_form_alter(&$form, &$form_state, $form_id) {
    if($form_id == 'story_node_form') {
        $form['title']['#value'] = 'hot stuff';
        $form['title']['#access'] = FALSE;

    }
}

سيؤدي هذا إلى تعيين عنوان عقدة القصة على "الأشياء الساخنة" ولن يتم عرضها على الصفحة لأن #access = FALSE؛

يمكنك إضافة المزيد من التحكم في الدقة داخل hook_form_alter () مثل

  global $user;

  // Check to see if $user has does not have the administrator role.
  if (!in_array('administrator', array_values($user->roles))) {
    $form['title']['#access'] = FALSE;
  }

هذا يعمل من أجل Drupal 6 & 7.

الجواب القديم (تجاهل) =

لقد مر وقت طويل منذ أن فعلت شيئًا كهذا ، لذا ربما أكون مخطئًا. إذا قمت بتعيين [#value] لعنصر نموذج ، فلن يكون مرئيًا في النموذج.

فعلت ذلك في Drupal 6، hook_form_alter() في وحدة مخصصة. لا أعرف ما إذا كانت ستعمل في Drupal 7 و لا أعرف ما إذا كان يمكنك القيام بذلك في وظيفة ما قبل المعالجة

6
iStryker

يمكنك أيضًا إضافة فئة CSS "عنصر مخفي" إلى عنصر النموذج

$form['user_edit_about']['group_audience']['#attributes']['class'][] = 'element-hidden';

كما ذكر iStryker سابقًا ، سيظل من الممكن تغيير القيمة من خلال معالجة DOM. ومع ذلك ، فهذه طريقة لطيفة وسهلة لإخفاء حقل نموذج (أو أي عنصر تجسيد آخر). ال element-hidden الفئة محددة في system.base.css.

5
Chaulky