nvlad / yii2support

Yii2 Support for PhpStorm / IntelliJ IDEA
https://plugins.jetbrains.com/idea/plugin/9388-yii2-support
Other
295 stars 54 forks source link

Не определяется поле #273

Open WinterSilence opened 3 years ago

WinterSilence commented 3 years ago

What steps will reproduce the problem?

config/web.php:

$config['modules']['gii'] = [
    'class' => yii\gii\Module::class,
    // uncomment the following to add your IP if you are not connecting from localhost.
    // 'allowedIPs' => ['127.0.0.1', '::1'],
    'generators' => [
        'model' => [
            'class' => app\gii\generators\model\Generator::class,
            'templates' => [
                'default' => '@app/gii/generators/model/default',
            ]
        ],
        'crud' => [
            'class' => app\gii\generators\crud\Generator::class,
            'modelClass' => 'app\\models\\',
            'enablePjax' => true,
            'baseControllerClass' => BackendController::class,
            'viewPath' => '@app/views/backend/', // Ошибка инспекции, поле не найдено
            'templates' => [
                'app' => '@app/gii/generators/crud/app',
            ]
        ],

Вначале было

namespace app\gii\generators\crud;
/**
 * @inheritDoc
 */
class Generator extends \yii\gii\generators\crud\Generator
{

я подумал, ну видимо плагин не знаком c @inheritDoc, заменил на

namespace app\gii\generators\crud;
/**
 * @inheritDoc
 * @property string $viewPath The controller view path. This property is read-only.
 */
class Generator extends \yii\gii\generators\crud\Generator
{

не помогло, указал свойство явно:

class Generator extends \yii\gii\generators\crud\Generator
{
    /**
     * @var string The controller view path. This property is read-only
     */
    public $viewPath;

ошибка как была так и осталась.

Additional info

Q A
IDE Name PhpStorm
IDE Version 2020.3
Plugin version 0.10.58.37
Yii App Template basic
iglooom commented 3 years ago

Хм, а у меня вроде при явном указании ошибка пропадает. А вот в случае inheritDoc и просто для указания в phpdoc тоже вылез алерт.

WinterSilence commented 3 years ago

@iglooom на самом деле, свойство уже явно указано в yii\gii\generators\crud\Generator и значение дожно определяться без проблем

кстати регулярка неверная, имя класса может содержать числа https://github.com/nvlad/yii2support/blob/28fa94b7f8aadef5561823d35364bb9f3db83b2a/src/com/nvlad/yii2support/common/ClassUtils.java#L477

iglooom commented 3 years ago

Конкретно этот момент проверяется вот тут https://github.com/nvlad/yii2support/blob/28fa94b7f8aadef5561823d35364bb9f3db83b2a/src/com/nvlad/yii2support/common/ClassUtils.java#L344 И этот параметр в yii\gii\generators\crud\Generator типа ридонли и по этому не попадает в подсказку.

WinterSilence commented 3 years ago

@iglooom @property-read вот свойство только для чтения, public свойства доступны для записи, смысл добавлять сеттер для него?

iglooom commented 3 years ago

Тоже без понятия почему именно так было реализовано. Смотрю просто что https://github.com/yiisoft/yii2-gii/blob/ef0ea5fa8db7a77c7e801f637fb67cdfba479c45/src/generators/crud/Generator.php#L28 тут указано "This property is read-only." при этом в @property не указано что -read и видимо когда плагин писали как раз проверяли такие кейсы наличием сеттера.

WinterSilence commented 3 years ago

@iglooom понял в чем дело, свойство viewPath задано явно, но в комменте класса указано как динамическое

 * @property string $viewPath The controller view path. This property is read-only.
 */
class Generator extends \yii\gii\Generator
{
    public $viewPath;