มุมมอง 3 ไม่รู้จักตัวจัดการประกาศ ทำไมจะไม่ล่ะ?


12

ใน modules / addressfield / addressfield.module ฉันมี:

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

ใน 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',
      ),
    ),
  );
}

ไฟล์นี้ไม่ได้รับการทริกเกอร์ในดีบักเกอร์เมื่อฉันล้างแคช ฉันไม่เข้าใจสิ่งนี้

ตัวจัดการอยู่ใน modules / addressfield / views / addressfield_views_handler_field_country.inc ซึ่งฉันใช้จากโมดูลตำแหน่ง:

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

คำแนะนำเกี่ยวกับวิธีการทำงานนี้จะเป็นประโยชน์ ขอบคุณ.


เพียงความคิดเห็นทั่วไป มุมมองเวอร์ชัน api ปัจจุบันเองคือ '3.0-alpha1' ดังนั้นคุณจึงไม่สามารถใช้ 3 คุณควรแชร์สำเนามุมมองของคุณเพราะมันมาจากอนาคต;)
Daniel Wehner

ฉันมีปัญหานี้มันแสดงให้เห็นในบันทึกว่า "ประกาศ: ชดเชยสตริงเริ่มต้น: 1 ใน views_get_handler ()" ติดที่นี่ดังนั้นถ้ามีคนค้นหาว่าพวกเขาจะพบหน้ามีประโยชน์นี้
Jeremy French

เพียงแค่ปลาย: รัน "drush vd" หนึ่งครั้ง ... นี่จะแสดงข้อความดีบักบางอย่างหากตัวจัดการขาดหายไปอย่างใด
Daniel Wehner

คำตอบ:


22

รุ่นหลักใด ใน Drupal 7, hook_views_handlers () หายไปเพิ่มไฟล์ของคุณไปยังไฟล์. info ของคุณแทน

files[]=views/addressfield_views_handler_field_country.inc

มันพูดอย่างนั้นจริงในหน้าความช่วยเหลือขั้นสูงของ Views (หน้า "การอัปเกรดเป็น Drupal 7 (API)")
Bojan Zivanovic

คุณคิดว่า Drupal สามารถส่งเสียงเตือนสุนัขเฝ้าบ้านว่ามันจะไม่โหลดไฟล์เพราะไม่ใช่รายการที่อนุญาต ฉันควรออกใบแจ้งหนี้ของ Dries ตามจำนวนชั่วโมงที่ฉันใช้ไป
John Franklin

นอกจากไฟล์. inc แล้วฉันยังต้องรวมไฟล์ MYMODULE.views.inc ของฉันในไฟล์. info ของฉันด้วย เหตุผลใดที่อาจเป็น? หากฉันไม่ได้รวมมันก็ไม่ตรวจพบปลั๊กอินมุมมองของฉัน
Keven
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.