web-dev-qa-db-fra.com

Comment accéder à une valeur de champ dans la variable $ row d'un modèle de thème de vue de champ?

Je remplace un modèle de champ pour l'une de mes vues et je souhaite pouvoir accéder à une autre valeur de champ à partir de la variable $ row. La documentation sur le fichier modèle montre ceci:

Lors de la récupération de la sortie de la ligne $, cette construction doit être utilisée: $ data = $ row -> {$ field-> field_alias}

Mon champ s'appelle field_calendar_title, mais ce qui suit ne fonctionne pas comme prévu:

$row->{$field->field_calendar_title}

J'obtiens l'erreur suivante:

Erreur fatale: impossible d'accéder à la propriété vide ...

Le champ "alias" est-il différent du nom du champ dans le type de contenu?

Sortie "nettoyée" de var_dump de $ 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 ) ) )
                                ...
                        )
) 
11
SomethingOn

D'après l'apparence du var_dump vous devriez pouvoir trouver la valeur de votre champ avec ceci:

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

J'espère vraiment qu'il y a un meilleur moyen que ça!

10
Clive

Une approche plus simple:

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

Ici, $ fieldname est le nom de champ d'origine (et non la vue), par exemple 'field_myfield'.

7
user606696

Peut-être un peu en retard, mais pour référence future, voici ma réponse:

La description est assez vague, mais vous devez littéralement utiliser:

$row->{$field->field_alias}

Dans votre fichier modèle, il est également noté que:

Variables disponibles:

  • $ view: l'objet de vue
  • $ field: l'objet gestionnaire de champ qui peut traiter l'entrée
  • $ row: le résultat SQL brut qui peut être utilisé
  • $ output: la sortie traitée qui sera normalement utilisée.

Dans $ field, il y a un champ appelé field_alias. Donc $row->{$field->field_alias} pointe en fait, dans votre cas, field_calendar_title.

Essayez de faire un var_dump de $ field et vous verrez par vous-même.

J'espère que cela aidera toute personne rencontrant ce message.

Gerben

3
Gerben Spil