Jump to content

Recommended Posts

Posted

Generates a .phpstorm.meta.php file for ProcessWire autocompletion in PhpStorm.

Features

  • Autocomplete wire container keys for wire('...') and Wire::wire('...')
  • Autocomplete module names for Modules::get() and Modules::install()
  • Autocomplete field names for Fields::get()
  • Autocomplete template names for Templates::get()
  • Autocomplete unique page names for Pages::get()
  • Autocomplete hookable methods for Wire::addHook*()
  • Autocomplete page status constants/strings for Page::status(), addStatus(), removeStatus(), hasStatus()
  • Autocomplete field flags for Field::addFlag(), removeFlag(), hasFlag()
  • Autocomplete template cache-expire constants for Template::cacheExpire()
  • Autocomplete Inputfield collapsed constants for Inputfield::collapsed()
  • Autocomplete sort flags for WireArray::sort()/sortFlags()/unique() and PageArray::sort()/sortFlags()/unique()
  • Optional: Field type autocompletion per Page class (when enabled in module config)

Usage

  • Default path: site/assets/.phpstorm.meta.php (configurable in module settings).
  • The file regenerates automatically when fields, templates, or modules change (debounced).
  • You can manually regenerate from the module settings screen.
  • Optional: enable "Generate page-class field metadata" in module settings for field type hints per Page class. This is intentionally basic. For richer field stubs, use AutoTemplateStubs.

Examples

Modules

$tracy = $modules->get('TracyDebugger');
// Autocomplete + correct class type for navigation and code insight

Wire Container

$page = wire('page');
$pages = $this->wire('pages');
$cache = wire('cache');
// Autocomplete for keys like page/pages/cache/etc.

Fields

$body = $fields->get('body');
// Autocomplete field names, fewer typos

Templates

$tpl = $templates->get('basic-page');
// Autocomplete template names

Pages

$home = $pages->get('/');
// Maps to the page class when page classes are enabled

Page Status

$page->status(Page::statusHidden);
$page->addStatus('draft');
$page->removeStatus(Page::statusUnpublished);
$page->hasStatus('locked');

Field Flags

$field->addFlag(Field::flagAutojoin);
$field->removeFlag(Field::flagAccess);
$field->hasFlag(Field::flagGlobal);

Template Cache Expire

$template->cacheExpire(Template::cacheExpireParents);

Inputfield Collapsed

$inputfield->collapsed(Inputfield::collapsedYesAjax);

Sort Flags

$items->sort('title', SORT_NATURAL | SORT_FLAG_CASE);
$items->sortFlags(SORT_NATURAL);
$items->unique(SORT_STRING);

Page-Class Field Metadata (Optional)

$home = $pages->get('/');
// $home is HomePage (page class)
// Field types are inferred from the template fieldgroup
// e.g. $home->hero_image -> Pageimage or Pageimages depending on field settings

Hooks

$wire->addHookAfter('Pages::save', function($event) {
    // Autocomplete hookable methods while typing the hook string
});

Notes

  • Hook scanning reads ProcessWire core, modules, and admin templates to build the hook list.
  • If page classes are enabled, page names map to their page class; otherwise they map to Page.
  • Improvement suggestions and PRs are welcome.

 

https://github.com/phlppschrr/ProcessWirePhpStormMeta

 
  • Like 9

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...