একটি সত্তা থেকে একটি ক্ষেত্রের মান প্রাপ্ত


11

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

সাধারণত পিএইচপি দিয়ে আমার টেম্পলে একটি নোড থেকে একটি ক্ষেত্রের মান টানতে আমি নিম্নলিখিতটি করতাম:

<?php echo $node->field_name[$node->language][0]['value']; ?>

তবে এটি সত্তা / সত্তাগুলির সাথে কাজ করে না।

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

আমি কীভাবে এই ক্ষেত্রের মান পেতে পারি তার কয়েকটি নির্দিষ্ট উদাহরণ সত্যই আমাকে অনেক সাহায্য করবে।

উত্তর:


13

আপনি কি সত্তা_মেডাটাটা_আপনার দিয়ে মানগুলি অ্যাক্সেস করার চেষ্টা করেছেন ?

$entityform_id = 12; // entity form id
$entityform = entityform_load($entityform_id);
$entityform_wrapper = entity_metadata_wrapper('entityform', $entityform);
// Access fields with $entityform_wrapper->field_name->value() or ->field_name->raw()
drupal_set_message($entityform_wrapper->field_my_field->value()); // for example

4
ভবিষ্যতের পাঠকদের জন্য নোট: এটি সঠিক, তবে সত্তা ফিল্ড অ্যাক্সেসের জন্য সত্তা এপিআই মডিউলটি ইনস্টল করা প্রয়োজন হয় না; ড্রুপাল কোর ইতিমধ্যে একটি সত্তা ক্ষেত্র অ্যাক্সেস ফাংশন আছে।
kiamlaluno

হ্যাঁ, তবে ওপি ট্যাগ এবং নির্দিষ্ট করে দিয়েছে যে তাদের সত্তা এপিআই মডিউল ইনস্টল করা আছে, সুতরাং এটিটি অ্যান্টিমেটডেটা_রাপ্পার, তদতিরিক্ত এটি সত্তা মডিউলটির নির্ভরতা is
ডেভিড থমাস

2
সত্তা-এপিআই হ'ল এন্টি এপিআই- র জন্য ট্যাগটি দ্রুপাল from থেকে প্রয়োগ করা হয়েছে, সত্তা এপিআই মডিউলের জন্য নয়। নোটটি হ'ল প্রাথমিক বিকাশকারীদের মনে করে সত্তাগুলি পরিচালনা করার জন্য সত্তা এপিআই মডিউলটি প্রয়োজনীয়। উত্তরটি সঠিক ছিল না বলে আমি বলিনি। :)
কিমলালুনো

7

সত্তার সাথে যুক্ত ক্ষেত্রের মান পেতে, সত্তা API মডিউলটি ব্যবহার না করে আপনি ফিল্ড_গেট_াইটেমস () ব্যবহার করেন ; আপনি সত্তার ধরণ, সত্তা অবজেক্ট এবং ক্ষেত্রের নামটি সবে পাস করেছেন।

উদাহরণস্বরূপ, কোনও মন্তব্যের মূল অংশ পেতে, আপনি নিম্নলিখিত কোডটি ব্যবহার করেন।

if ($items = field_get_items('comment', $comment, 'comment_body')) {
  // ...
}

নোডের দেহ পেতে, আপনি নিম্নলিখিত কোডটি ব্যবহার করতে পারেন।

if ($items = field_get_items('node', $node, 'body')) {
  // ...
}

সত্তা অবজেক্টটি হ'ল অ্যান্টিটি_লোড () , বা সেই সত্তার জন্য নির্দিষ্ট লোড ফাংশন, যেমন নোড_লোড () , মন্তব্য_লোড () , বা ট্যাক্সোনমি_টারম_লোড () থেকে প্রত্যাবর্তিত বস্তু । ড্রুপাল 8-এ, এই ফাংশনগুলির জন্য মোড়ক রয়েছে entity_load()

আপনি যদি ক্ষেত্রের সামগ্রীটি দেখতে চান তবে আপনার ফিল্ড_ভিউ_ফিল্ড () ব্যবহার করা উচিত ।


0

আপনি সাধারণত $ নোড বৈশিষ্ট্যগুলি পেতে পারেন কারণ আপনি বা কিছু কোড আপনি নোড_লোড () আগে কল করছেন।

কোনও সত্তার বৈশিষ্ট্য পাওয়ার আগে আপনাকে সম্পূর্ণরূপে লোড করতে হবে।

সত্তা_লোড () ব্যবহার করুন http://api.drupal.org/api/drupal/includes%21common.inc/function/entity_load/7

তারপরে আপনার কাছে আসলে একটি বোঝা সত্তা অবজেক্ট থাকবে যা আপনি এর ক্ষেত্রগুলিতে পেতে পারেন।

ডিএমএম () ব্যবহার করা অন্য ফাংশনগুলির সমান, আপনার কেবলমাত্র ডিভেল মডিউলটি ইনস্টল করতে হবে।

সুতরাং, এর মতো কিছু করুন:

<?php
$entity = entity_load('myEntityType', $entity_id);
dpm($entity);
?>

0

চেষ্টা করুন:

$value= field_get_items('entityform', $entityform, 'field_myfieldname');
print '<p>the value is: '.$value.'</p>';

এটি ক্ষেত্রের মান মুদ্রণ করা উচিত।

এটি যদি অ্যারে হয় তবে চেষ্টা করুন:

$values = field_get_items('entityform', $entityform, 'field_myfieldname');
$value = $values[0]['value'];
print '<p>the value is: '.$value.'</p>';

মনে রাখবেন যে এটি কাঁচা আউটপুট এবং যেখানে মানটি আসে তার উপর নির্ভর করে আপনাকে মানটি এখানে নিজেই স্যানিটাইজ করতে হতে পারে।

দেখুন: ফাংশন ফিল্ড_গেট_াইটেমস


0

এটি আপনার মডিউলগুলির একটির ভিতরে রাখুন এবং ফর্মের পৃষ্ঠায় যান এবং আপনি যে তথ্যটি সন্ধান করছেন তা পাবেন।

function yourmodulename_form_alter(&$form, &$form_state, $form_id) {

  dpm($form);

}

-1

পরিবর্তে ডিএমএম ব্যবহার এবং যে মডিউলটি আমি ব্যবহার করি তা ইনস্টল করার চেয়ে:

print_r('<pre>');
print_r($node);
print_r('</pre>');

আশা করি এটি আপনাকে মানটি কমাতে সহায়তা করবে।


? হুম আমার জন্য যে outputting না কিছু :( কারণ আমি একজন entityform জমা দেখার করছি, এবং একটি নোড অথবা একটি entityform জমা আসলে একটি নোড হবে তাই বিভ্রান্ত হতে পারে।
ডাস্টিন

আমি তখন নিশ্চিত নই, আমি ধরে নেব যে you নোড ব্যতীত আপনার আলাদা ভেরিয়েবলের দরকার হবে।
ব্রায়ান

1
প্রশ্নটি কোনও সত্তার ক্ষেত্র অ্যাক্সেস সম্পর্কে, সত্তা কীভাবে প্রিন্ট করা যায় তা নয়।
kiamlaluno
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.