- Changed $appName property visibility from private to protected
- OCP\AppFramework\Controller requires protected visibility
- Error: "must be protected (as in class OCP\AppFramework\Controller)"
- Same applies to $request property
- This is the final routing/access fix after 7 hours of debugging
- Fixed: Routes, navigation, parent constructor, class name, path conflicts
- All issues resolved - controller now properly extends OCP\AppFramework\Controller
- Controller now fully compatible with Nextcloud's DI and permission system
The error showed that protected property visibility is required by Nextcloud's Controller base class.
This is the final fix for all routing and access issues!
- Added parent::__construct() call to PageController
- Fixes: "must be an instance of OCP\AppFramework\Controller"
- Error: Argument 1 passed to Dispatcher was PageController, not Controller
- This is the CRITICAL fix for controller DI in Nextcloud
- PageController now properly extends OCP\AppFramework\Controller
- Maintains simple HTML output for testing
The error showed the controller wasn't properly extending the base class.
Nextcloud's Dispatcher requires all controllers to extend OCP\AppFramework\Controller.
- Renamed AdminController to PageController
- Route name is 'page#index' so controller must be 'PageController'
- Fixes Could not resolve PageController error
- Updated routes.php to use PageController
- Updated info.xml navigation to point to PageController
- Removed old AdminController.php
- Improved HTML output with better styling and next steps
This was the root cause: Controller class name must match route name.
Route: page#index → Controller: PageController
App routing should now work correctly!