Не работает ide helper
не удалось вставить данные в базу данных, и весь класс запросов и метод класса модели не найдены в среде IDE (phpStrom), как я могу ее решить?
вот мой расширенный класс (Post.php) здесь показывает ошибку в последнем и где метод:
и вот мой класс контроллера, где я его использую:
Если вы хотите, чтобы класс, расширяющий Model , распознавал методы Eloquent, просто добавьте в верхний комментарий PHPDoc следующий класс:
Примечание: Большинство из вас, вероятно, используют ide-helper для Laravel, поэтому этот атрибут @mixin автоматически создается для классов модели.
Так как методы where , latest , find , findOrFail и другие не существуют в классе Model , но в Builder и загружаются с помощью магических методов, IDE не может их обнаружить.
В то время как широко предложенный laravel-ide-helper отличный, он не помогает. Существует несколько issues и обсуждения и обходные пути но все имеют свои проблемы.
Самое лучшее решение, которое я нашел до сих пор, IMHO - это понизить степень серьезности, если __magic методы присутствуют в классе. PhpStorm имеет эту точную опцию в настройках проверки.
Заезд Settings -> Inspections -> PHP -> Undefined -> Undefined method Это не позволит вам нажать на этот метод, но просто отключает раздражающую разметку. Узнайте больше о серьезности или проверьте этот более выразительный ответ SO <
Для тех, кто пришел сюда за решением, у меня сработало решение в этом Кару:
особенно когда я бежал:
Редактировать: чтобы использовать эту команду, вам нужно установить ide-helper, запустить:
после этого методы признаются.
Мой класс. Аннотации помогут PhpStorm распознать эти методы.
Немного раздражает, чтобы добавить ко всем вашим моделям, но вы можете добавить этот метод в свои модели docblock. Это заставит его работать правильно в PHPStorm.
Я новичок в laravel, и все эти проблемы с моделями и phpstorm очень странные. Это большой недостаток. Такие решения, как добавление @mixin Eloquent или работающего php artisan ide-helper: модели не работали для меня. PHPStorm не находит "Красноречивый" или "Красноватый". ide-helper: модели не добавляют все полезные статические методы. Поэтому я пришел с собственной базовой моделью, которая содержит php doc со всеми соответствующими методами модели:
Тогда мои собственные модели расширяют эту модель:
И тогда все работает. BaseModel теперь не является полным, не стесняйтесь добавлять дополнительные статические методы, добавляя их по требованию.
Вы можете добавить @mixin QueryBuilder в phpdoc Model Class
Путь к файлу: project_path\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php
После того, как я добавил это, он не работал для меня, но я все еще упоминаю это для завершения.
Тогда я попробовал это:
В моей модели я добавил use Eloquent; вверху. (Я добавил Eloquent путем автоматического завершения вместо ввода).
Затем над своим классом я набрал "/** хит ENTER", который автоматически генерировал PHP документы в недавно сгенерированных документах PHP я добавил @mixin Eloquent внизу.
В качестве последнего шага я нажал Ctrl + Alt + Y (настройки по умолчанию), который синхронизируется (File-> Synchronize) в PhpStorm.
Это исправило предупреждения, и метод my :: find в моем контроллере был найден, и автозаполнение работало.
Например, ниже моего класса:
Просто чтобы этот вопрос можно было "ответить", вам нужен laravel ide-helper. Следуйте этим инструкциям, и все должно работать на вас.
Согласование и +1 @rutter. Я бы добавил, что эта проблема постоянно на моем лице, так как я концентрируюсь на проектах Laravel.
Barry Laravel-IDE Git отлично подходит для методов "сшивки", он не может действительно захватывать каждую проблему, это происходит много с областью пакета поставщика Laravel (который позже вызывается через другие классы/методы..)
Я бросаю мяч туда, но если intelliJ создаст компилятор, который сможет попробовать/поймать заданные магические методы (после их установки) только на одной кнопке нажмите (возврат bool и на успех маршрут к методу) хорошо. это было бы здорово.
Конструктивно я бы предложил, чтобы они заставили эту кнопку синхронизации означать что-то (кроме обновления).
не удалось вставить данные в базу данных, и весь класс запросов и метод класса модели не найдены в среде IDE (phpStrom), как я могу ее решить?
вот мой расширенный класс (Post.php) здесь показывает ошибку в последнем и где метод:
и вот мой класс контроллера, где я его использую:
Посмотрите на это . Следуйте инструкциям, и это должно быть распознано. То есть, это просто ошибка в PhpStorm? Код работает нормально, хотя?Так как методы where , latest , find , findOrFail и другие не существуют в классе Model , но в Builder и загружаются с помощью магических методов, IDE не может их обнаружить.
В то время как широко предложенный laravel-ide-helper отличный, он не помогает. Существует несколько issues и обсуждения и обходные пути но все имеют свои проблемы.
Самое лучшее решение, которое я нашел до сих пор, IMHO - это понизить степень серьезности, если __magic методы присутствуют в классе. PhpStorm имеет эту точную опцию в настройках проверки.
Заезд Settings -> Inspections -> PHP -> Undefined -> Undefined method Это не позволит вам нажать на этот метод, но просто отключает раздражающую разметку. Узнайте больше о серьезности или проверьте этот более выразительный ответ SO <
Другой вариант - $model = (new ModelClass)-> , покажет полное завершениеЕсли вы хотите расширить класс Model для распознавания методов Eloquent, просто добавьте комментарий PHPDoc класса
Это прекрасно работает! Как можно применить этот комментарий ко всем моим моделям, не записав его в каждой? Является ли это возможным? Попробуйте определить это в родительском классе. Если это невозможно, вы должны определить это в каждом классе модели.Немного раздражает, чтобы добавить ко всем вашим моделям, но вы можете добавить этот метод в свои модели docblock. Это заставит его работать правильно в PHPStorm.
Вы можете добавить @mixin QueryBuilder в phpdoc Model Class
Путь к файлу: project_path\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php
Я новичок в laravel, и все эти проблемы с моделями и phpstorm очень странные. Это большой недостаток. Такие решения, как добавление @mixin Eloquent или работающего php artisan ide-helper: модели не работали для меня. PHPStorm не находит "Красноречивый" или "Красноватый". ide-helper: модели не добавляют все полезные статические методы. Поэтому я пришел с собственной базовой моделью, которая содержит php doc со всеми соответствующими методами модели:
Тогда мои собственные модели расширяют эту модель:
И тогда все работает. BaseModel теперь не является полным, не стесняйтесь добавлять дополнительные статические методы, добавляя их по требованию.
Мой класс. Аннотации помогут PhpStorm распознать эти методы.
Пожалуйста, добавьте больше деталей и описания к вашему ответу. @YousefAltaf Нет причин, чтобы кто-то не понимал этого @Patrioticcow Нет, это не так. Что ты сделал? Что ты изменил? Как это конкретно применимо к OP-вопросу? Здесь нет информации, которая позволила бы мне экстраполировать на мой собственный код, потому что вы еще не сказали, что на самом деле делает ваше решение.Добавив это, это не сработало для меня, но я все еще упоминаю это ради завершения.
Затем я попробовал это:
В моей модели я добавил use Eloquent; на вершине. (Я добавил Eloquent путем автоматического завершения, а не для ввода).
Затем над моим классом я набрал "/** hit ENTER", который автоматически сгенерировал PHP-документы во вновь созданных PHP-документах, которые я добавил @mixin Eloquent ниже.
В качестве последнего шага я нажимаю Ctrl + Alt + Y (настройки по умолчанию), который синхронизируется (File-> Синхронизировать) в PhpStorm.
Это фиксировало предупреждения и метод my :: find в моем контроллере, и было выполнено автоматическое завершение работы.
Внизу ниже моего класса:
Для всех, кто пришел сюда для решения, то, что сработало для меня, - это решение в этом StackOverflow:
особенно когда я побежал:
после чего распознаются методы.
Согласование и +1 @rutter. Я бы добавил, что эта проблема постоянно на моем лице, так как я концентрируюсь на проектах Laravel.
Barry Laravel-IDE Git отлично подходит для методов "сшивки", он не может действительно захватывать каждую проблему, это происходит много с областью пакета поставщика Laravel (который позже вызывается через другие классы/методы..)
Я бросаю мяч туда, но если intelliJ создаст компилятор, который сможет попробовать/поймать заданные магические методы (после их установки) только на одной кнопке нажмите (возврат bool и на успех маршрут к методу) хорошо. это было бы здорово.
Конструктивно я бы предложил, чтобы они заставили эту кнопку синхронизации означать что-то (кроме обновления).
Laravel - это замечательный фреймворк, который имеет широкий функционал, и много реализаций, облегчающих жизнь программисту. Однако, обратной стороной этого удобства является сложность в чтении кода для IDE. В результате чего, IDE не может проанализировать код должным образом, и построить полное автодополнение кода. Потому, для того, чтобы было удобно работать с Laravel в PHPStorm-е, его необходимо дополнительно настроить.
В этой статье будет рассмотрено:
Предварительная настройка IDE
В каждом новом проекте, который я начинаю в PHPStorm-е, начальные шаги одинаковые: выбор интерпретатора PHP, указание пути к composer-у, NodeJs и JavaScript
Выбор версии PHP и настройка пути к интерпретатору
Настройка версии PHP и интерпретатора находится на вкладке File | Settings | Languages & Frameworks | PHP
В открывшемся окне, будет доступно 2 изменяемые графы:
PHP Language Level - это версия PHP, по которой IDE будет проверять синтаксис вами написанного кода. И в случае несоответствия синтаксису выбранной версии, прямо в IDE вам будет подсвечена ошибка.
CLI interpriter - это путь к интерпретатору PHP.
Если вы ранее не добавляли интерпретаторы, то вам ничего не будет доступно, потому, сейчас его нужно добавить, нажав, справа от выбора интерпретатора, кнопку поиска (2)
После нажатия по (2) кнопке, то появится меню:
Нажав на (1) кнопку, будет предложено на выбор 2 варианта:
From Docker, Vagrant, VM, Remote - в случае, если вы хотите указать удалённый интерпретатор (Docker, Vagrant)
Local Path to Interpreter - чтобы указать локальную версию (как в моём случае)
А в PHP executable нужно прописать путь к php.
Я пользуюсь Laragon, потому мой путь выглядит PATH_TO_LARAGON\bin\php. \php.exe ,
В случае OpenServer, путь будет выглядеть примерно: PATH_TO_OS\modules\php\. \php.exe
Указание путь к composer
Путь к composer-у указывается на вкладке File | Settings | Languages & Frameworks | PHP | Composer
В этом меню нужно переключить опцию в composer.phar, и в этой графе (1) указать путь к исполняемому файлу composer.
И выберите итерпретатор, созданный шагом ранее
У меня, путь к composer-у выглядит так: E:\laragon\bin\composer\composer.phar
NodeJs
NodeJs, его пакетный менеджер, NPM, будет хорошим помощником в подключении всех фронтенд-библиотек. Потому, во-первых, нужно указать путь к самому NodeJs, а во вторых, нужно настроить всё так, чтобы синтаксис Vue-шаблонов был понятен для самой IDE.
В меню File | Settings | Languages & Frameworks | Node.js and NPM, аналогично предыдущим пунктам, нужно указать путь к nodeJs (после его указания, автоматически должен подключиться NPM)
JavaScript
Ввиду того, что Vue использует новые ES6 синтаксис для написания шаблонов, то необходимо в самой IDE переключить на поддержку этого синтаксиса на вкладке File | Settings | Languages & Frameworks | JavaScript, выбрав ECMSScript 6
Настройка Laravel
Теперь, осталось провести некоторые настройки, относящиеся к Laravel.
Установка Laravel плагина
Теперь нужно установить Laravel-плагин в PHPStorm. Плагины устанавливаются на вкладке File | Settings | Plugins.
Для поиска плагина, в строку поиска нужно вписать laravel
И выбрать интересующий нас Laravel Plugin, который добавляет автодополнение в маршрутах, видах, конфигах.
Когда он будет установлен, появится новая вкладка File | Settings | Languages & Frameworks | PHP | Laravel
На которой, нужно поставить галочку на Enable plugin for this project
Настройка VueJs
Для VueJs, аналогично Laravel, так же существует свой отдельный плагин. Чтобы его установить, нужной на вкладке File | Settings | Plugins найти Vue и установить
Подключение нужных библиотек, последние шаги настройки
Сейчас мы уже имеем проект, с которым можно работать. Однако, по-прежнему, нету автокомплита методов в маршрутах, миграциях, Eloquent, ввиду особенной структуры фреймворка. Для решения этой проблемы, нужно скачать библиотеку laravel ide-helper, которая сгенерирует дополнительные мета-файлы для IDE.
Установка IDE-helper
Для установки IDE-helper-а, воспользуемся composer-ом (Tools > Composer > Manage Dependencies)
И в строку поиска, введём: barryvdh/laravel-ide-helper
Установив эту библиотеку, нужно добавить в файл config/app.php, в массив providers: Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider::class
На этом этапе, уже можно запустить ide-helper, и получить желаемый эффект автокомплита. Но, сделав так в данный момент, эта библиотека возьмёт дефолтные настройки, в которых отключена генерация Fluent-методов. Потому, прежде, скопируем конфиг ide-helper.php с папки vendor/barryvdh/laravel-ide-helper/config, в локальную папку config.
И уже в локальном файле, нужно изменить значение include_fluent на true .
Теперь достаточно выполнить команду artisan ide-helper:generate
После чего, появится новый файл _ide_helper.php , который PHPStorm успешно проанализирует, и мы получим желаемое автодополнение:
Автодополнение команд artisan
Сложно заполнить все команды artisan, а постоянно отвлекаться на поиск команд не продуктивно. Благо, в PHPStorm предусмотрена возможность созданий автодополнения команд (File | Settings | Tools | Command Line Tool Support).
Artisan - это команда, основана на консоле symfony, зная это, добавим команду:
Откроется меню, в котором нужно указать:
alias - с какого имени начинаются команды (можно указать a , и вызывать a make:controller .
Path to PHP executable - наш ранее добавленный интерпретатору
Path To Script - путь к artisan-файлу проекта
В результате, должны получить информацию о том, что команды добавлены:
И сейчас, если открыть консоль: Tools > Run Commands
И все команды, которые начинаем с artisan будут подсвечены возможным дополнением
Резюме
Итого, в этой статье была рассмотрена настройка laravel в phpstorm, установка плагинов, так же было показано, как работать с Laravel IDE-helper, настраивать composer и включать автодополнение phpstorm artisan команд
А ещё, рекомендую просмотреть статью, в которой я показываю процесс установки и настройки крутой темы оформления Monokai для PHPStorm, которая тебе точно придётся по вкусе, дорогой разработчик.
Фреймворк Laravel имеет богатый функционал, значительно облегчая жизнь программисту. Однако, обратной стороной этого удобства, является сложность в чтении кода для IDE. В результате, IDE не может проанализировать код должным образом, и предложить программисту автодополнение кода. Потому, чтобы было удобно работать с Laravel в PhpStorm, нужна дополнительная настройка.
Чтобы с помощью Composer-а установить в директорию blog последнюю версию Laravel, выполянем команду:
Выбор версии PHP и настройка пути к интерпретатору
Настройка версии PHP и интерпретатора находится на вкладке File → Settings → Languages & Frameworks → PHP:
- PHP Language Level — версия PHP для проверки синтаксиса
- CLI interpriter — путь к интерпретатору PHP
Путь к менеджеру пакетов Composer
Путь к composer-у указывается на вкладке File → Settings → Languages & Frameworks → PHP → Composer:
Путь к Node.js и менеджеру пакетов NPM
Node.js и пакетный менеджер NPM, будут хорошим помощником в подключении всех фронтенд-библиотек. Путь к Node.js можно задать на вкладке File → Settings → Languages & Frameworks → Node.js and NPM:
Выбор версии JavaScript
Настройка версии JavaScript находится на вкладке File → Settings → Languages & Frameworks → JavaScript:
Установка Laravel плагина
Плагины устанавливаются на вкладке File → Settings → Plugins. Для поиска нужного плагина, в строку поиска набираем «laravel»:
После установки плагина появится новая вкладка File → Settings → Languages & Frameworks → PHP → Laravel. Здесь нужно поставить галочку «Enable plugin for this project»:
Установка Vue.js плагина
На вкладке File → Settings → Plugins найти Vue.js и установить:
Установка IDE-helper для Laravel
Для установки IDE-helper-а, воспользуемся composer-ом — Tools → Composer → Manage Dependencies. В строку поиска вводим «barryvdh/laravel-ide-helper»
Второй способ — просто установить IDE-helper с помощью Composer:
После установки библиотеки нужно отредактировать файл config/app.php :
Заключительный шаг — создаем файл _ide_helper.php в корне проекта:
Установка Laravel Debugbar
В консоли выполняем команду:
Вносим изменения в файл .env , чтобы включить Debugbar:
Чтобы отключить Debugbar, вносим изменения в файл .env :
Однако после этого панель отладчика, возможно, никуда не денется. Laravel кэширует настройки и больше в файлы конфигурации не заглядывает. Поэтому в консоли нужно выполнить команду:
Читайте также: