Come posso accedere a un valore di campo nella variabile $ row in un modello di tema di visualizzazione campo?


11

Sto sovrascrivendo un modello di campo per una delle mie viste e voglio poter accedere ad un altro valore di campo dalla variabile $ row. La documentazione sul file modello mostra questo:

Quando si recupera l'output dalla riga $, è necessario utilizzare questo costrutto: $ data = $ row -> {$ field-> field_alias}

Il mio campo si chiama field_calendar_title, ma quanto segue non funziona come previsto:

$row->{$field->field_calendar_title}

Ottengo il seguente errore:

Errore irreversibile: impossibile accedere alla proprietà vuota ...

Il campo "alias" è diverso dal nome del campo nel tipo di contenuto?

Output "pulito" da var_dump di $ row:

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

Risposte:


10

Dagli aspetti del var_dumpdovrebbe essere possibile trovare il valore del campo con questo:

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

Spero davvero che ci sia un modo migliore di quello però!


Mi dispiace di aver corretto la sintassi nella mia domanda e ancora non ha funzionato. Ho provato anche questo e senza fortuna $ row-> field_calendar_title;
Qualcosa il

Hmmm ... Penso che dal messaggio di errore $fieldsia indefinito ... hai provato a fare un var_dump($row)per vedere cosa c'è realmente dentro? Probabilmente vedrai il campo che stai cercando abbastanza facilmente :)
Clive

Ehi Clive, sì, ho fatto un var_dump e il campo esiste sotto _field_data insieme al resto dei valori del campo ...
SomethingOn

Se riesci a inserire l'output della var_dump($row)tua domanda come modifica, potrei essere in grado di individuare il valore che ti serve
Clive

@SomethingOn Ho aggiornato la risposta, non è carina ma dovrebbe funzionare :)
Clive

7

Un approccio più semplice:

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

Qui $ fieldname è il nome campo originale (non aliasing della vista), ad esempio "field_myfield".


3

Forse un po 'in ritardo, ma per riferimento futuro ecco la mia risposta:

La descrizione è piuttosto vaga, ma dovresti letteralmente usare:

$row->{$field->field_alias}

Nel tuo file modello si nota anche che:

Variabili disponibili:

  • $ view: l'oggetto view
  • $ field: l'oggetto del gestore di campo che può elaborare l'input
  • $ row: il risultato SQL non elaborato che può essere utilizzato
  • $ output: l'output elaborato che verrà normalmente utilizzato.

In $ field c'è un campo chiamato field_alias. Quindi in $row->{$field->field_alias}realtà punta a, nel tuo caso, field_calendar_title.

Prova a creare un var_dump di $ field e vedrai di persona.

Spero che questo aiuti chiunque si imbatta in questo post.

Gerben


Non è mai troppo tardi, continua a fare domande. 1. Non voglio usare l'esempio mostruoso di @ Clive, sebbene funzioni 2. Voglio capire come lavorare con determinate variabili: $ row, $ archiviato, ecc. Il tuo suggerimento restituisce solo un numero (forse nid o smth ), ma come posso accedere con precisione al mio campo. Cosa succede se ho due campi diversi che voglio ottenere?
Vladkras,

-2

Il modo più semplice è: $ fields ["field_name"] -> content; Dove nome_campo -> nome campo cck.

Spero che possa aiutare !!

Saluti ! Raj


1
non esiste una $fieldsvariabile disponibile nel modello di campo
Ejaz
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.