jumpinjackie / mapguide-rest

REST Extension for MapGuide Open Source
GNU Lesser General Public License v2.1
26 stars 14 forks source link

Selection Route Issue in PHP 8 version using mapguide 4 Beta #217

Closed flipper44 closed 7 months ago

flipper44 commented 7 months ago

"Body": { "geometry": null, "selectionvariant": "INTERSECTS", "persist": "true", "layerattributefilter": 0, "requestdata": 0, "featurefilter": "Primary_Linesogr_fid IN (1200)", "selectionxml": "false", "format": "json", "maxfeatures": -1, "append": "true", "layernames": "Primary_Lines" } http://localhost/mapguide/rest/session/3aec65ba-83d6-11ee-8000-dc41a9a474b9_en_MTI3LjAuMC4x0AFC0AFB0AFA/ElectricMap.Selection

ERRor: Slim Application Error:\r\nType: TypeError\r\nMessage: MgMapController::QueryMapFeaturesInternal(): Argument #5 ($layerNames) must be of type MgStringCollection, string given, called in C:\Program Files\OSGeo\MapGuide\Web\www\rest\app\controller\mapcontroller.php on line 436

If I remove mgStringCollection from line 463 of mapcontroller php, it then fails on MgGeometry (doesn't like a null). if I remove the MgGeometry type, I get another error Message: MgSelectionRenderer::Render(): Argument #6 ($inlineSelectionImg) must be of type MgByteReader, null given, called in C:\Program Files\OSGeo\MapGuide\Web\www\rest\app\controller\mapcontroller.php on line 515 File: C:\Program Files\OSGeo\MapGuide\Web\www\rest\app\util\selectionrenderer.php Line: 67 Trace: #0 C:\Program Files\OSGeo\MapGuide\Web\www\rest\app\controller\mapcontroller.php(515): MgSelectionRenderer->Render()

1 C:\Program Files\OSGeo\MapGuide\Web\www\rest\app\controller\mapcontroller.php(436): MgMapController->QueryMapFeaturesInternal()

2 C:\Program Files\OSGeo\MapGuide\Web\www\rest\app\routes\v1\routes.session.php(479): MgMapController->QueryMapFeatures()

3 [internal function]: Closure->{closure}()

4 C:\Program Files\OSGeo\MapGuide\Web\www\rest\vendor\slim\slim\Slim\Handlers\Strategies\RequestResponse.php(40): call_user_func()

5 C:\Program Files\OSGeo\MapGuide\Web\www\rest\vendor\slim\slim\Slim\Route.php(281): Slim\Handlers\Strategies\RequestResponse->__invoke()

6 C:\Program Files\OSGeo\MapGuide\Web\www\rest\vendor\slim\slim\Slim\MiddlewareAwareTrait.php(117): Slim\Route->__invoke()

7 C:\Program Files\OSGeo\MapGuide\Web\www\rest\vendor\slim\slim\Slim\Route.php(268): Slim\Route->callMiddlewareStack()

8 C:\Program Files\OSGeo\MapGuide\Web\www\rest\vendor\slim\slim\Slim\App.php(503): Slim\Route->run()

9 C:\Program Files\OSGeo\MapGuide\Web\www\rest\vendor\slim\slim\Slim\MiddlewareAwareTrait.php(117): Slim\App->__invoke()

10 C:\Program Files\OSGeo\MapGuide\Web\www\rest\vendor\slim\slim\Slim\App.php(392): Slim\App->callMiddlewareStack()

11 C:\Program Files\OSGeo\MapGuide\Web\www\rest\vendor\slim\slim\Slim\App.php(297): Slim\App->process()

12 C:\Program Files\OSGeo\MapGuide\Web\www\rest\index.php(237): Slim\App->run()

13 {main}

View in rendered output by enabling the "displayErrorDetails" setting.

jumpinjackie commented 7 months ago

It's due to the overzealous type-safety-ing of the PHP codebase I introduced in #202

I clearly got some parameter types wrong, so I'll hunt around using your example request as the starting point.