প্রোগ্রামের ভিত্তিতে কোনও ক্ষেত্রের জন্য ডিফল্ট মান সেট করে


10

ড্রুপাল 6-তে, আমরা পিএইচপি ব্যবহার করতে পারতাম ডিফল্ট মান সেট করতে, তবে একই কোডটি দ্রুপাল 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;
  }
}

উত্তর:


17

ধরে নিই যে আপনার ফর্মের পরিবর্তনের কাজটি আসলে চলছে (যা আপনি সেই কল দিয়ে নিশ্চিত করতে পারেন dsm()), ক্ষেত্রের উপাদানটি পেতে আপনাকে আরও 2 টি স্তরের অ্যারে যেতে হবে:

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

ড্রুপাল 7-এ আপনার প্রতিটি ভাষার ক্ষেত্রে ক্ষেত্রটির অনুবাদ হয়েছে (যার ফলে একাধিক / সীমাহীন কার্ডিনালিটিযুক্ত ক্ষেত্রগুলির জন্য পরিচয় করানো যেতে পারে) এর মান রয়েছে এবং এর প্রতিটিের অধীনে বিভিন্ন ক্ষেত্রের কলামগুলির জন্য অ্যারে রয়েছে। বেশিরভাগ ক্ষেত্রে এটি 'মান' হবে তবে সর্বদা হয় না (উদাহরণস্বরূপ কোনও চিত্র ক্ষেত্রে একটি ফাইল আইডি কলাম, ওয়েল কলাম ইত্যাদি থাকে)

আশা করি এইটি কাজ করবে


এটি আরও একটি গভীরতা :)$form["field_accounts"]["und"][0]["value"]['#default_value'] = $default;
giorgio79

2
এই উত্তরটি সমস্ত উইজেটের জন্য কাজ করবে না; তারা কীভাবে তাদের মান নির্দিষ্ট করে তার উপর নির্ভর করে। উদাহরণস্বরূপ, একটি স্বত্বের ক্ষেত্রের সাথে, ব্যবহার করুন: $ ফর্ম ['ক্ষেত্রের নাম'] ['und'] [0] ['টার্গেট_আইডি'] ['# ডিফল্ট_মূল্য'] = $ ডিফল্ট
রিনি

@ রিনি খুব সত্য; এখানে আরও গভীরতর ব্যাখ্যা রয়েছে
ক্লাইভ

1
মাঠের মানগুলিতে সর্বদা একটি ভাষা থাকে @ মৌনির, যদি আপনার কোনও বহুভাষিক সাইট না থাকে তবে ডিফল্টটি LANGUAGE_NONEব্যবহার করা উচিত
ক্লাইভ

1
প্রকৃতপক্ষে, আমি ব্যাখ্যা করতে পারলাম যে কিছুটা ভাল @ মউনিয়ার :) আপনি বর্তমান ভাষাটি কোথাও ফর্মটিতে খুঁজে পাবেন (আমার মনে হয় সম্ভবত $form['#entity']->languageতবে আমাকে যাচাই করতে হবে, যাতে এটি একটি ধ্রুবকের জায়গায় ব্যবহার করা যেতে পারে Ret পুনরুদ্ধার কোড) $languageগ্লোবাল দ্বারা নির্ধারিত হিসাবে বর্তমান ভাষাটিও ব্যবহার করবে , তবে যে কোনও উপায়ে সহায়তা করার জন্য এপিআই পদ্ধতি রয়েছে ( field_get_itemsবা EntityMetadataWrapperসত্তা মডিউল দ্বারা সরবরাহিত আরও ভাল )
ক্লাইভ

0

এই সঠিক:

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

এটি সূক্ষ্মভাবে কাজ করে:

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;
  }
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.