Alan görünümü tema şablonundaki $ row değişkenindeki bir alan değerine nasıl erişirim?


11

Görünümlerimden biri için bir alan şablonunu geçersiz kılıyorum ve $ row değişkeninden başka bir alan değerine erişmek istiyorum. Şablon dosyasındaki belgeler şunu gösterir:

$ Satırından çıktı alınırken, bu yapı kullanılmalıdır: $ data = $ row -> {$ field-> field_alias}

Alanım field_calendar_title olarak adlandırılıyor, ancak aşağıdakiler beklendiği gibi çalışmıyor:

$row->{$field->field_calendar_title}

Aşağıdaki hatayı alıyorum:

Önemli hata: Boş mülke erişilemiyor ...

"Takma ad" alanı, içerik türündeki alan adından farklı mı?

$ Row var_dump öğesinden "temizlendi" çıktı:

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 ) ) )
                                ...
                        )
) 

Yanıtlar:


10

Görünüşe göre, var_dumpalan değerinizi bulabilmeniz gerekir:

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

Umarım bundan daha iyi bir yol vardır!


Üzgünüm sorumun sözdizimini düzelttim ve hala işe yaramadı. Bunu da denedim ve şans yok $ row-> field_calendar_title;
SomethingOn

Hmmm ... Sanırım hata mesajında $fieldtanımsız ... var_dump($row)orada gerçekten ne olduğunu görmek için bir yapmayı denediniz mi? Muhtemelen oldukça kolay bir şekilde peşinde olduğunuz alanı tespit edersiniz :)
Clive

Hey Clive, evet bir var_dump yaptım ve alan, alan değerlerinin geri kalanıyla birlikte _field_data altında var ...
SomethingOn

var_dump($row)Düzenleme olarak sorunuzun çıktısını açabiliyorsanız, ihtiyacınız olan değeri tespit edebilirim
Clive

Cevabı güncellediğimde, hoş değil ama işe yaramalı :)
Clive

7

Daha basit bir yaklaşım:

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

Burada $ fieldname, orijinal (görünüm diğer adı değil) alan adıdır; örneğin, 'field_myfield'.


3

Belki biraz geç, ama gelecekteki referans için cevabım:

Açıklama oldukça belirsiz, ancak tam anlamıyla kullanmalısınız:

$row->{$field->field_alias}

Şablon dosyanızda ayrıca:

Mevcut değişkenler:

  • $ view: Görüntüleme nesnesi
  • $ field: Girdiyi işleyebilen alan işleyicisi nesnesi
  • $ row: Kullanılabilen ham SQL sonucu
  • $ output: Normalde kullanılacak işlenmiş çıktı.

$ Alanında field_alias adında bir alan vardır. Yani $row->{$field->field_alias}aslında field_calendar_title senin olayda, işaret ediyor.

$ Alan var_dump oluşturmayı deneyin ve kendiniz görün.

Umarım bu yazı ile gelen herkese yardımcı olur.

Gerben


Asla çok geç değil, hala trend olan bir soru. 1. Monstrous @ Clive'in örneğini kullanmak istemiyorum, ama işe yarıyor ), ancak alanıma tam olarak nasıl erişebilirim? Almak istediğim iki farklı alanım varsa ne olur?
vladkras

-2

En basit yol: $ fields ["field_name"] -> içerik; Alan_adı -> cck alan adı.

Umarım yardımcı olur !!

Şerefe! hakimiyet


1
$fieldsalan şablonunda değişken yok
Ejaz
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.