विचार 3 किसी घोषित हैंडलर को नहीं पहचानता है। क्यों नहीं?


12

मॉड्यूल / एड्रेसफ़ील्ड / एड्रेसफ़ील्ड में। मेरे पास:

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

तथा

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

मॉड्यूल / एड्रेसफील्ड / विचार / 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',
      ),
    ),
  );
}

कैश खाली करने पर यह फ़ाइल डीबगर में चालू नहीं होती है। मुझे यह समझ में नहीं आता है।

हैंडलर मॉड्यूल / एड्रेसफ़ील्ड / व्यू / एड्रेसफ़ील्ड_हैंड्स_हैंडलर_फ़ील्ड_क्राउनट्री में है जो मैंने लोकेशन मॉड्यूल से लिया था:

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

यह काम करने के लिए कैसे प्राप्त करने के बारे में कोई सलाह उपयोगी होगी। धन्यवाद।


बस एक सामान्य टिप्पणी। विचारों का वर्तमान एपीआई संस्करण '3.0-अल्फ़ा 1' है, इसलिए आप 3 का उपयोग नहीं कर सकते हैं। आपको अपने विचारों की प्रतिलिपि साझा करनी चाहिए, क्योंकि यह भविष्य से है;)
डैनियल वेनर

मुझे यह समस्या यह थी कि यह लॉग में "सूचना: अनइंस्टाल्यूटेड स्ट्रिंग ऑफ़सेट: 1 इन व्यू_गेट_हैंडलर ()" के रूप में दिखाई दे रही है, इसलिए यदि कोई व्यक्ति इसके लिए खोज करता है तो उसे यह उपयोगी पृष्ठ मिलेगा।
जेरेमी फ्रेंच

बस एक टिप: "ड्रश वीड" को एक बार निष्पादित करें ... यह आपको कुछ डिबग संदेश दिखाएगा यदि हैंडलर किसी भी तरह से गायब हैं।
डैनियल वेनर

जवाबों:


22

कौन सा कोर संस्करण? Drupal 7 में, hook_views_handlers () चला गया है, इसके बजाय अपनी फ़ाइलें अपने .info फ़ाइल में जोड़ें।

files[]=views/addressfield_views_handler_field_country.inc

यह वास्तव में एडवांस हेल्प पेज (पेज "ड्रुपल 7 (एपीआई) के लिए अपग्रेड)" में ऐसा कहता है
Bojan Zivanovic

आपको लगता है कि Drupal एक वॉचडॉग चेतावनी का उत्सर्जन कर सकता है कि यह फ़ाइल को लोड नहीं करेगा क्योंकि यह श्वेतसूची में नहीं है। मुझे उन घंटों के लिए Dries का इनवॉइस करना चाहिए जो मैंने इसे नीचे चलाने में बिताए हैं।
जॉन फ्रैंकलिन

.Inc फ़ाइल के अलावा मुझे अपनी .Mfo फ़ाइल में MYMODULE.views.inc फ़ाइल भी शामिल करनी थी। किसी भी कारण से ऐसा क्यों हो सकता है? अगर मैं इसे शामिल नहीं करता हूं तो मेरे विचार प्लगइन का पता नहीं लगाया जाता है।
केवेन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.