আমি কীভাবে ফিল্ড ভিউ থিম টেমপ্লেটে $ সারির ভেরিয়েবলের ক্ষেত্রের মানটি অ্যাক্সেস করব?


11

আমি আমার দৃশ্যের একটির জন্য একটি ফিল্ড টেম্পলেটটি ওভাররাইড করছি এবং আমি $ সারির ভেরিয়েবল থেকে অন্য ক্ষেত্রের মানটি অ্যাক্সেস করতে সক্ষম হতে চাই। টেমপ্লেট ফাইলে ডকুমেন্টেশন এটি দেখায়:

$ সারি থেকে আউটপুট আনার সময়, এই নির্মাণটি ব্যবহার করা উচিত: $ ডেটা = $ সারি -> {$ ক্ষেত্র-> ক্ষেত্র_লিয়াস}

আমার ক্ষেত্রটিকে ক্ষেত্র_ক্যালেন্ডার_শিরোনাম বলা হয়, তবে নিম্নলিখিতটি প্রত্যাশার মতো কাজ করে না:

$row->{$field->field_calendar_title}

আমি নিম্নলিখিত ত্রুটি পেয়েছি:

মারাত্মক ত্রুটি: খালি সম্পত্তি অ্যাক্সেস করতে পারে না ...

বিষয়বস্তুর ক্ষেত্রে ক্ষেত্রের নাম থেকে ক্ষেত্রের নাম "উরফ" কি আলাদা?

$ সারির var_dump থেকে "পরিষ্কার" আউটপুট:

stdClass Object
(
    [node_title] => ...
    [nid] => 568
    [field_data_field_performance_date_delta] => 0
    [field_data_field_performance_date_language] => und
    [field_data_field_performance_date_bundle] => event
    [field_data_field_performance_date_field_performance_date_val] => 2012-03-02 19:00:00
    [field_data_field_performance_date_node_entity_type] => node
    [_field_data] => Array
        (
            [nid] => Array
                (
                    [entity_type] => node
                    [entity] => stdClass Object
                        (
                            [vid] => 878
                            [uid] => 0
                            [title] => ...
                            [log] => 
                            [status] => 1
                            [comment] => 0
                            [promote] => 0
                            [sticky] => 0
                            [nid] => 568
                            [type] => event
                            [language] => und
                            [created] => 1329332968
                            [changed] => 1331836509
                            [tnid] => 0
                            [translate] => 0
                            [revision_timestamp] => 1331836509
                            [revision_uid] => 1
                            [body] => Array
                                (
                                    [und] => Array
                                        (
                                            [0] => Array
                                                (
                                                    [value] => ...
                                                    [summary] => ...
                                                    [safe_summary] => ...
                                                )
                                        )
                                )
                                [field_resident_company] => Array ( [und] => Array ( [0] => Array ( [tid] => 3 ) ) )
                                [field_series] => Array ( [und] => Array ( [0] => Array ( [tid] => 36 ) ) )
                                [field_venue] => Array ( )
                                [field_rotator_image] => Array ( )
                                [field_exclude] => Array ( [und] => Array ( [0] => Array ( [value] => 0 ) ) )
                                [field_performance_image] => Array ( )
                                [field_premiere] => Array ( [und] => Array ( [0] => Array ( [value] => 1330714800 [timezone] => UTC [timezone_db] => UTC [date_type] => datestamp ) ) )
                                [field_closing] => Array ( [und] => Array ( [0] => Array ( [value] => 1330714800 [timezone] => UTC [timezone_db] => UTC [date_type] => datestamp ) ) )
                                [field_exclude_update] => Array ( [und] => Array ( [0] => Array ( [value] => 0 ) ) )
                                [field_performance_date] => Array ( [und] => Array ( [0] => Array ( [value] => 2012-03-02 19:00:00 [timezone] => UTC [timezone_db] => UTC [date_type] => datetime ) ) )
                                [field_performance_id] => Array ( [und] => Array ( [0] => Array ( [value] => 1436 [format] => [safe_value] => 1436 ) ) ) [field_event_status] => Array ( [und] => Array ( [0] => Array ( [value] => open ) ) )
                                [field_calendar_title] => Array ( [und] => Array ( [0] => Array ( [value] => PSYCHIC EXP [format] => [safe_value] => PSYCHIC EXP ) ) )
                                ...
                        )
) 

উত্তর:


10

আপনার চেহারা থেকে var_dumpআপনার এটির সাথে আপনার ক্ষেত্রের মানটি সন্ধান করতে সক্ষম হওয়া উচিত:

$row->_field_data['nid']['entity']->field_calendar_title['und'][0]['value'];

আমি সত্যিই আশা করি যে এর চেয়ে ভাল উপায় আর আছে!


দুঃখিত আমি আমার প্রশ্নের বাক্য গঠন সংশোধন করেছি এবং এটি এখনও কার্যকর হয়নি। এটি চেষ্টা করেও ভাগ্য নেই luck সারি-> ক্ষেত্র_ক্যালেন্ডার_শীত;
কিছু

হুমম ... আমি মনে করি ত্রুটি বার্তাটি অপরিবর্তিত থেকে $field... var_dump($row)সেখানে আসলে কী আছে তা দেখার জন্য আপনি কি চেষ্টা করার চেষ্টা করেছেন ? আপনি সম্ভবত সেই ক্ষেত্রটি খুব সহজেই পরে পাবেন: :)
ক্লাইভ

আরে ক্লাইভ হ্যাঁ আমি, var_dump করেনি এবং FIELD ক্ষেত্রের মান বাকি সঙ্গে বরাবর _field_data অধীনে বিদ্যমান ...
SomethingOn

আপনি যদি var_dump($row)একটি সম্পাদনা হিসাবে আপনার প্রশ্নের আউটপুটটি পপ করতে পারেন তবে আমি আপনার প্রয়োজনীয় মানটি
ক্লাইভ

@ কিছু কিছু আমি উত্তর আপডেট করেছি, এটি সুন্দর নয় তবে এটি কাজ করা উচিত :)
ক্লাইভ

7

একটি সহজ পদ্ধতির:

$rendered_field = $view->render_field($fieldname, $view->row_index);

এখানে, $ ক্ষেত্রের নামটি আসল (দৃশ্য-বহিরাগত নয়) ক্ষেত্রের নাম, যেমন 'ফিল্ডমাইফিল্ড'।


3

কিছুটা দেরি হতে পারে তবে ভবিষ্যতের রেফারেন্সের জন্য আমার উত্তর এখানে দেওয়া হয়েছে:

বর্ণনাটি বেশ অস্পষ্ট, তবে আপনার আক্ষরিক ব্যবহার করা উচিত:

$row->{$field->field_alias}

আপনার টেমপ্লেট ফাইলে এটি উল্লেখ করা হয়েছে যে:

চলকগুলি উপলব্ধ:

  • $ ভিউ: ভিউ অবজেক্ট
  • $ ক্ষেত্র: ক্ষেত্র হ্যান্ডলার অবজেক্ট যা ইনপুটটি প্রক্রিয়া করতে পারে
  • $ সারি: কাঁচা এসকিউএল ফলাফল যা ব্যবহার করা যায়
  • $ আউটপুট: প্রক্রিয়াজাত আউটপুট যা সাধারণত ব্যবহৃত হবে।

$ ক্ষেত্রে ফিল্ড_লিয়াস নামে একটি ক্ষেত্র রয়েছে। সুতরাং $row->{$field->field_alias}আপনার ক্ষেত্রে ক্ষেত্রের_ক্যালেন্ডার_শব্দটি আসলে নির্দেশ করছে।

$ ক্ষেত্রের একটি var_dump তৈরি করার চেষ্টা করুন এবং আপনি নিজের জন্য দেখতে পাবেন।

আশা করি এটি এই পোস্টটি জুড়ে আসা যে কাউকে সহায়তা করবে।

Gerben


এটি কখনই খুব বেশি দেরি করে না, এখনও ট্রেন্ডিং প্রশ্ন। ১. আমি রাক্ষসী @ ক্লাইভের উদাহরণটি ব্যবহার করতে চাই না, যদিও এটি কাজ করে 2. আমি প্রদত্ত ভেরিয়েবলগুলির সাথে কীভাবে কাজ করব তা বুঝতে চাই: $ সারি, $ দায়ের করা, ইত্যাদি Your ), তবে আমি কীভাবে আমার ক্ষেত্রটি সুনির্দিষ্টভাবে অ্যাক্সেস করতে পারি। আমি পেতে চাই যে দুটি ভিন্ন ক্ষেত্র আছে?
ভ্লাদক্রাস

-2

সহজ উপায় হ'ল: $ ক্ষেত্র ["ফিল্ড_নাম"] -> সামগ্রী; যেখানে ক্ষেত্রের নাম -> সিসি ফিল্ডের নাম।

আশা করি যে সাহায্য করবে !!

চিয়ার্স! রাজ


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