Làm cách nào để sửa lỗi triển khai Hook Hook không nên sao chép tài liệu @param.


10

Tôi đang sử dụng PhpStorm để thử nghiệm làm sạch mã của mình trong một mô-đun tùy chỉnh. Đối với chức năng sau, tôi nhận được cảnh báo này:

Hook triển khai không nên trùng lặp tài liệu @param.

/**
 * Implements hook_field_widget_form_alter().
 *
 * @param array $element
 * @param array $form_state
 * @param array $context
 */
function mymodule_field_widget_form_alter(&$element, $form_state, $context) {
  if ($context['widget'] instanceof \Drupal\text\Plugin\Field\FieldWidget\TextareaWidget) {
    $element['#after_build'][] = '_mymodule_remove_textarea_help';
  }
}

Tôi nên làm gì để khắc phục điều này? Tôi nghĩ rằng tôi cần phải xóa các @parambình luận, nhưng khi tôi làm điều đó, PhpStorm phàn nàn rằng tôi không có bất kỳ bình luận param nào.


2
Tắt "Tùy chọn -> Trình chỉnh sửa -> Kiểm tra -> PHP -> PHPDoc -> Thiếu bình luận PHPDoc" có thể? Câu trả lời chung là để kiểm tra tài liệu của PHPStorm phù hợp với tiêu chuẩn tài liệu của Drupal
Clive

3
Vấn đề là bạn kiểm tra các tiêu chuẩn mã hóa drupal và các tiêu chuẩn mã hóa php. Bạn nên hủy kích hoạt trình thám thính cho các tiêu chuẩn mã hóa php chung và sử dụng các tiêu chuẩn mã hóa drupal tùy chỉnh
sgoelz 3/2/2016

@Clive có câu trả lời đúng ở đây. Lỗi đó không liên quan gì đến tiêu chuẩn mã hóa và mọi thứ liên quan đến việc kiểm tra được xây dựng trong
PHPStorm

Awnswer được chấp nhận giải quyết vấn đề trong IDE nhưng nếu bạn kiểm tra tiêu chuẩn mã hóa thì vấn đề vẫn còn đó. Xem giải pháp của tôi.
Adrian Cid Almaguer

Câu trả lời:


5

Vấn đề là nếu bạn đang thực hiện một hook và bạn không cần phải viết nhiều hơn thế này:

/**
 * Implements hook_field_widget_form_alter().
 */

Bởi vì bạn sẽ có tất cả thông tin trong hook_field_widget_form_alter()định nghĩa, vì vậy chỉ cần viết luôn trong phần triển khai hook chỉ này:

/**
 * Implements hook_hook_name().
 */

Trong trường hợp của bạn:

/**
 * Implements hook_field_widget_form_alter().
 */
function mymodule_field_widget_form_alter(&$element, $form_state, $context) {
  if ($context['widget'] instanceof \Drupal\text\Plugin\Field\FieldWidget\TextareaWidget) {
    $element['#after_build'][] = '_mymodule_remove_textarea_help';
  }
}

1

Thêm một câu trả lời cho hậu thế; theo nhận xét của Clive:

Bạn cần tắt kiểm tra PHPStorm tích hợp để kiểm tra "Thiếu bình luận PHPDoc", sau đó bạn có thể xóa các @paramkhối của mình một cách an toàn .

nhập mô tả hình ảnh ở đây


1
Downvoter có quan tâm giải thích những gì sai để tôi có thể sửa đổi câu trả lời không? Hay chỉ là một downvote "ăn miếng trả miếng"?
Chapabu

1
Điều này giải quyết vấn đề trong IDE nhưng nếu bạn kiểm tra tiêu chuẩn mã hóa thì vấn đề vẫn còn đó. Xem giải pháp của tôi.
Adrian Cid Almaguer

0

Như những người khác đã nói, bạn cần đặt cấu hình PHPStorm để coi dự án của bạn là một dự án Drupal.

Thứ hai, hãy đứng dậy và chạy với Coder .

Khi bạn đã cài đặt các gói đó, bạn có thể kết nối chúng trong PHPStorm và thiết lập hệ thống tiêu chuẩn của bạn phù hợp hoặc chỉ chạy các báo cáo từ dòng lệnh. Điều này sẽ làm cho môi trường của bạn phù hợp hơn với các tiêu chuẩn mã hóa Drupal thay vì các tiêu chuẩn chung có PHPStorm ra khỏi cấu hình hộp.


1
Các downvote là của tôi. Tôi không "ném bom thảm" bất cứ điều gì, tôi chỉ đơn giản là đánh giá thấp câu trả lời vì chúng không chính xác.
Chapabu

2
Thật là một hành động bất lịch sự.
Jimmy Ko
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.