A PHPStan extension that validates Inertia.js page existence on disk when used in Laravel controllers.
- Validates
Inertia::render()
static calls - Validates
inertia()
helper function calls - Validates
$this->inertia()
method calls in controllers - Supports multiple page directory configurations
- Supports various file extensions (.vue, .jsx, .tsx, .js, .ts)
- Handles both dot notation (
Auth.Login
) and slash notation (Auth/Login
) for page names
composer require --dev adrum/inertia-phpstan
Add the extension to your phpstan.neon
:
includes:
- vendor/adrum/inertia-phpstan/extension.neon
The extension will automatically validate that Inertia pages exist on disk when analyzing your controllers:
class UserController extends Controller
{
public function dashboard()
{
// ✓ Will pass if resources/js/Pages/Dashboard.vue exists
return Inertia::render('Dashboard');
}
public function profile()
{
// ✗ Will fail if resources/js/Pages/Profile/Edit.vue doesn't exist
return Inertia::render('Profile/Edit');
}
}
The extension looks for pages in these directories by default:
resources/js/Pages
resources/js/pages
resources/ts/Pages
resources/ts/pages
resources/vue/Pages
resources/vue/pages
resources/react/Pages
resources/react/pages
.vue
.jsx
.tsx
.js
.ts
See the examples/
directory for a sample controller and PHPStan configuration.