필드 뷰 테마 템플릿에서 $ row 변수의 필드 값에 어떻게 액세스합니까?


11

뷰 중 하나에 대한 필드 템플릿을 재정의하고 $ row 변수에서 다른 필드 값에 액세스 할 수 있기를 원합니다. 템플릿 파일의 설명서는 다음과 같습니다.

$ row에서 출력을 가져올 때이 구문을 사용해야합니다. $ data = $ row-> {$ field-> field_alias}

내 필드의 이름은 field_calendar_title이지만 다음과 같이 작동하지 않습니다.

$row->{$field->field_calendar_title}

다음과 같은 오류가 발생합니다.

치명적인 오류 : 빈 속성에 액세스 할 수 없습니다 ...

"별칭"필드가 컨텐츠 유형의 필드 이름과 다른가?

$ row의 var_dump에서 "Cleansed"출력 :

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'];

나는 그보다 더 좋은 방법이 있기를 정말로 희망합니다!


죄송합니다. 질문의 구문을 수정했는데 여전히 작동하지 않습니다. 이것도 시도했지만 운이 없다 $ row-> field_calendar_title;
SomethingOn

흠 ... 오류 메시지 $field에서 정의되지 않은 것 같습니다 ... var_dump($row)실제로 무엇이 있는지 확인 하려고 했습니까? 당신은 아마 당신이 쫓아 온 필드를 쉽게 찾을 수있을 것입니다 :)
Clive

이봐 Clive, p 나는 var_dump하고 필드는 나머지 필드 값과 함께 _field_data 아래에 존재합니다 ...
SomethingOn

var_dump($row)질문 의 결과를 편집물로 편집 할 수 있다면 필요한 값을 찾을 수있을 것입니다.
Clive

@SomethingOn 나는 대답을 업데이트했는데, 예쁘지는 않지만 작동해야합니다 :)
Clive

7

더 간단한 접근법 :

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

여기에서 $ fieldname은 원래의 (별칭 별칭이 아닌) 필드 이름입니다 (예 : 'field_myfield').


3

어쩌면 조금 늦었지만 나중에 참조 할 수 있도록 내 대답은 다음과 같습니다.

설명은 모호하지만 문자 그대로 사용해야합니다.

$row->{$field->field_alias}

템플릿 파일에는 다음과 같은 사항이 있습니다.

사용 가능한 변수 :

  • $ view : 뷰 객체
  • $ field : 입력을 처리 할 수있는 필드 핸들러 객체
  • $ row : 사용할 수있는 원시 SQL 결과
  • $ output : 일반적으로 사용될 처리 된 출력.

$ field에는 field_alias라는 필드가 있습니다. 그래서 $row->{$field->field_alias}실제로 field_calendar_title, 귀하의 경우, 가리키고 있습니다.

$ field의 var_dump를 만들어 보면 스스로 볼 수 있습니다.

희망이 사람 이이 게시물을 통해 오는 데 도움이되기를 바랍니다.

거벤


결코 늦지 않았으며 여전히 유행하는 질문입니다. 1. monstrous @Clive의 예제를 사용하고 싶지는 않지만 작동합니다. 2. 주어진 변수 ($ row, $ filed 등)로 작업하는 방법을 이해하고 싶습니다. 제안은 숫자 만 반환합니다. ), 어떻게 정확하게 내 필드에 액세스 할 수 있습니까? 두 개의 다른 필드를 갖고 싶다면 어떻게해야합니까?
vladkras

-2

가장 간단한 방법은 다음과 같습니다. $ fields [ "field_name"]-> content; 여기서 field_name-> cck 필드 이름입니다.

희망이 도움이 될 것입니다 !!

건배! 주권


1
$fields필드 템플릿에 사용 가능한 변수 가 없습니다
Ejaz
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.