একটি কাস্টম ব্যবহারকারী ক্ষেত্রের মান পান


13

আমার একটি কাস্টম ফর্ম রয়েছে যা কাস্টম ব্যবহারকারী ক্ষেত্র থেকে একটি ডিফল্ট মান প্রদর্শন করা প্রয়োজন। ক্ষেত্রটি / অ্যাডমিন / কনফিগার / জনগণ / অ্যাকাউন্ট / ক্ষেত্রের অধীনে তৈরি হয়েছিল এবং এর মেশিনের নাম ক্ষেত্র_আর_পরিয়াদি_ দৈর্ঘ্য_সেস্ক।

//get user
$userCurrent = \Drupal::currentUser();
$uid = $userCurrent->id();
$r_period = $userCurrent->field_r_period_length_sec;

তবে মানটি দেখায় না এবং আমি এই ত্রুটিটি পেয়েছি:

বিজ্ঞপ্তি: অপরিজ্ঞাপিত সম্পত্তি: দ্রুপাল ore কোর ession সেশন \ অ্যাকাউন্টপ্রোকি :: $ ক্ষেত্র_আর_পরিবর্তন_ দৈর্ঘ্য_সংস্কৃতি

আমি কি ভুল করছি?

উত্তর:


17

বারদিরের উত্তর আমাকে একটি অনুসন্ধান শব্দ দিয়েছে যা আমাকে পেয়েছে:

$user = \Drupal\user\Entity\User::load(\Drupal::currentUser()->id());

কিছুটা পরীক্ষা এবং ত্রুটির পরেও, এই কোডটি কাজ করে, অন্য কারও প্রয়োজন হলে:

$user = \Drupal\user\Entity\User::load(\Drupal::currentUser()->id());
$r_period = $user->field_r_period_length_sec->value;

একাধিক মান জন্য, ব্যবহার করুন

$r_period = $user->get('field_r_period_length_sec')->getValue();

1
যে কেউ পিএইচপিএসটর্ম থেকে সতর্কতা অপসারণ করতে চাইলে উপরে $r_period = $user->field_r_period_length_sec->value;এই মন্তব্যটি যুক্ত করুন/** @var $user \Drupal\user\Entity\User */$user = \Drupal\user\Entity\User::load(\Drupal::currentUser()->id());
নীল নন্দ

3

বর্তমান ব্যবহারকারী অবজেক্টটি কোনও ব্যবহারকারী সত্তা নয়। নির্দিষ্ট করা তথ্য ব্যতীত যে কোনও ক্ষেত্রে অ্যাক্সেস করতে আপনাকে সেই আইডি সহ ব্যবহারকারীকে লোড করতে হবে AccountInterface


2

আমি জানি না যে কখন থেকে এই উত্তরগুলি আর কাজ করে না, তবে দ্রুপাল 8.5 এর সাথে উপরের সমাধানটি সর্বদা নালিশ করে দেয়।

তদন্তের পরে কোনও ব্যবহারকারী প্রোফাইল থেকে কাস্টম ফিল্ড অ্যাক্সেসের সমাধানটি হ'ল:

$activeProfile = \Drupal::getContainer()
  ->get('entity_type.manager')
  ->getStorage('profile')
  ->loadByUser(User::load([uid]), '[profile_machine_name]');

তাহলে আপনি করতে পারেন

$activeProfile->field_xxx->value

ধন্যবাদ! আমি ব্যবহারকারীর প্রোফাইল থেকে নির্দিষ্ট ক্ষেত্র পেতে সক্ষম হয়েছি। তবে আমি ভাবছি আপনি কীভাবে কোনও প্রোফাইল ফিল্ডের নাম সেট / আপডেট করতে পারবেন? টিআইএ
জন রে তানকিনকো

1
$ প্রোফাইল-> সেট ('ক্ষেত্রের নাম', মান)
ডেনিস কলমারস্লাগ

1

Entity::load()বন্ধ ভিত্তি করে এর \Drupal::entityManager();যা হয় অবচিত

এটি করার একটি আরও ভাল উপায় হ'ল এনটিটিটাইপম্যানেজার () ব্যবহার করে।

$user = \Drupal::entityTypeManager()->getStorage('user')->load($current_user->id());
$r_period = $user->field_r_period_length_sec->value;
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.