Görünümler 3 bildirilen bir işleyiciyi tanımıyor. Neden olmasın?


12

Modüller / adres alanı / adres alanı modülünde:

/**
 * Implements hook_views_api().
 */
function addressfield_views_api() {
  return array(
    'api' => 3,
    'path' => drupal_get_path('module', 'addressfield') . '/views',
  );
}

ve

/**
*  Implements hook_field_views_data_alter
* 
* @param mixed $result
* @param mixed $field
*/
function addressfield_field_views_data_alter (&$result, $field) {
  if (array_key_exists('field_data_field_address', $result)) {
    $result['field_data_field_address']['field_address_country'] += array(
      'title' => t('Country'),
      'help' => t('The Country name of the field'),
      'field' => array(
        'handler' => 'addressfield_views_handler_field_country',
        'click sortable' => TRUE,
      ),
    );
  }
}

Modüller / adres alanı / görünümler / adres alanı.views.inc:

/**
 * Implementation of hook_views_handlers().
 */
function addressfield_views_handlers() {
  return array(
    'info' => array(
      'path' => drupal_get_path('module', 'addressfield') . '/views',
    ),
    'handlers' => array(
      'addressfield_views_handler_field_country' => array(
        'parent' => 'views_handler_field',
      ),
    ),
  );
}

Önbelleği temizlediğimde bu dosya hata ayıklayıcıda tetiklenmiyor. Bunu anlamıyorum.

İşleyici, konum modülünden aldığım modüller / adres alanı / görünümler / adres alanı_Görünümler

/**
 * @file
 * Country field handler.
 */

class addressfield_views_handler_field_country extends views_handler_field {

  function option_definition() {
    $options = parent::option_definition();
    $options['style'] = array('default' => 'name');
    return $options;
  }

  function options_form(&$form, &$form_state) {
    parent::options_form($form, $form_state);
    $form['style'] = array(
      '#title' => t('Display style'),
      '#type' => 'select',
      '#options' => array('name' => t('Country name'), 'code' => t('Country code')),
      '#default_value' => $this->options['style'],
    );
  }

  function render($values) {
      return check_plain(strtoupper($values->{$this->field_alias}));
  }
}

Bunu işe nasıl alacağınıza dair herhangi bir tavsiye yardımcı olacaktır. Teşekkür ederim.


Sadece genel bir yorum. Görüntülemelerin şu anki API sürümü '3.0-alpha1' olduğundan 3'ü kullanamazsınız. Görüntülemelerinizin kopyasını paylaşmalısınız, çünkü gelecekten;)
Daniel Wehner

Biri arama yaparsanız, bu yararlı sayfa bulacaksınız böylece "Not: Başlatılmamış dize ofset: views_get_handler () 1 burada yapışmasını günlükleri gösterdi bu sorun vardı.
Jeremy French

Sadece bir ipucu: bir kez "drush vd" yürütmek ... işleyiciler bir şekilde eksikse size bazı hata ayıklama mesajları gösterecektir.
Daniel Wehner

Yanıtlar:


22

Hangi çekirdek sürüm? Drupal 7'de hook_views_handlers () gitti, dosyalarınızı .info dosyanıza ekleyin.

files[]=views/addressfield_views_handler_field_country.inc

Aslında, Views gelişmiş yardım sayfalarında bunu söylüyor (sayfa "Drupal 7'ye Yükseltme (API)")
Bojan Zivanovic

Drupal'ın, beyaz listeye alınmadığı için dosyayı yüklemeyeceğini belirten bir uyarı gönderebileceğini düşünürdünüz. Dries'i bunu takip ederek geçirdiğim saatler için faturalandırmalıyım.
John Franklin

.İnc dosyasına ek olarak, MYMODULE.views.inc dosyamı da .info dosyama eklemek zorunda kaldım. Bunun olmasının bir nedeni var mı? Bunu dahil etmezsem, görünümlerim eklentisi algılanmaz.
Keven
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.