>

$host_entity에 다음이 포함되어 있습니다.

field_eventorganizer (Array, 1 element)
und (Array, 3 elements)
0 (Array, 1 element)
target_id (String, 2 characters ) 20
1 (Array, 1 element)
target_id (String, 4 characters ) 345
2 (Array, 1 element)
target_id (String, 2 characters ) 678

아래 코드는 내부에 여러 배열을 만들어야합니다. array('#markup' .

$organisers=user_load($host_entity->field_eventorganizer['und'][0]['target_id']);
$organiser_email=$organisers->mail;
    $build['field_eventorganizer'] = array(
    '#theme' => 'registration_property_field',
    '#label' => 'Event Organiser(s)',
    '#items' => array(
        array('#markup' => l($username, 'mailto:' . $organiser_email, array('absolute' => TRUE)),),
        ),
        '#classes' => 'field field-label-inline clearfix',
    );

다음에 foreach 루프를 만들어야합니까? array('#markup' => ?


  • 답변 # 1

    이것을 반복하십시오 $build 변수 :)

    // define variables
    $organisers[] = "";
    $organiser_email = "";
    $organiser_name = "";
    $email_delimiter = "; ";
    // recreate the array from your example
    $organisers['und'][0]['target_id'] = 20;
    $organisers['und'][1]['target_id'] = 345;
    $organisers['und'][2]['target_id'] = 678;
    // populate $build variable
    $build['field_eventorganizer'] = array(
          '#theme' => 'registration_property_field',
          '#label' => 'Event Organiser(s)2',
          '#classes' => 'field field-label-inline clearfix',
        );
    // because the numbers are nested in the array, I've chosen to use `for` instead of 
    // `foreach` to use $i as the iterator then rebuild what I'm looking for in the loop. I've 
    // used count($organisers['und']) because the next piece of the array is the number we are
    // using to load user data.
    for ($i = 0; $i < count($organisers['und']); $i++) {
        // load the user object based on $i
        $organisers = user_load($host_entity->field_eventorganizer['und'][$i]['target_id']);
        // fetch loaded users email
        $organiser_email = $organisers->mail;
        // fetch loaded users name
        $organiser_name = $organisers->name;
        // populate $build variable
        $build['field_eventorganizer'][] = array(
          '#items' => array(
            array('#markup' => l($organiser_name, 'mailto:' . $organiser_email, array('absolute' => TRUE)),),
          ),
        );
    }
    
    

    참고 : 의도적인지 아닌지 확실하지 않지만 복수형에주의하십시오. 사용하고 있습니다 $organisers$organiser_email 때로는 놓칠 수 있고 두통을 일으킬 수 있습니다.

  • 이전 drupal - 조건부보기 [NULL] 필드 항목 또는 규칙 표현식을 기반으로하는 노드 표시
  • 다음 drupal - 하나의 역할 만 파일을 다운로드하도록 허용