Views 3 non riconosce un gestore dichiarato. Perchè no?


12

In moduli / addressfield / addressfield.module ho:

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

e

/**
*  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,
      ),
    );
  }
}

In modules / addressfield / views / addressfield.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',
      ),
    ),
  );
}

Questo file non viene attivato nel debugger quando svuoto la cache. Non lo capisco

Il gestore si trova in modules / addressfield / views / addressfield_views_handler_field_country.inc che ho preso dal modulo location:

/**
 * @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}));
  }
}

Qualsiasi consiglio su come farlo funzionare sarebbe utile. Grazie.


Solo un commento generale. L'attuale versione api delle viste stesse è '3.0-alpha1', quindi non puoi usare 3. Dovresti condividere la tua copia delle viste, perché proviene dal futuro;)
Daniel Wehner,

Ho riscontrato questo problema nei registri come "Avviso: offset stringa non inizializzato: 1 in views_get_handler ()" incollato qui, quindi se qualcuno lo cerca troveranno questa pagina utile.
Jeremy French,

Un consiglio: esegui "drush vd" una volta ... questo ti mostrerà alcuni messaggi di debug se i gestori mancano in qualche modo.
Daniel Wehner,

Risposte:


22

Quale versione principale? In Drupal 7, hook_views_handlers () non c'è più, aggiungi invece i tuoi file al tuo file .info.

files[]=views/addressfield_views_handler_field_country.inc

In realtà lo dice nelle pagine della guida avanzata di Views (pagina "Aggiornamento a Drupal 7 (API)")
Bojan Zivanovic,

Penseresti che Drupal potrebbe emettere un avviso di controllo che non carica il file perché non è nella lista bianca. Dovrei fatturare Dries per le ore che ho trascorso inseguendo questo.
John Franklin,

Oltre al file .inc ho anche dovuto includere il mio file MYMODULE.views.inc nel mio file .info. Qualche motivo per cui potrebbe essere? Se non lo includo, il mio plug-in di visualizzazioni non viene rilevato.
Keven,
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.