A request is first processed by symfony and, if no specific route has been found, the request is passed on to X-Cart for processing. If the prefix “admin/” is used in the URL, then the zone is set to Admin.
Keep in mind that controllers in symfony do not have access to all the functionality of X-Cart; speaking more precisely, some additional steps are required for work with X-Cart.
XCart uses non-standard routing. For controller selection, the request parameters target and action are used.
Based on the target parameter, an appropriate class is selected:
<XCart>/classes/XLite/Controller/{Zone}/{Target}.php
<XCart>/modules/{AuthorId}/{ModuleId}/src/Controller/{Zone}/{Target}.php
Zone - Admin or Customer - this is defined in the base controller \XCart\Controller\XCartController
Target - The value of the target request parameter is converted from snake_case to UpperCamelCase (PascalCase)
Based on the action parameter, a controller method is selected:
doAction{Action}
If the action parameter is missing, the method doNoAction is used.
Action - The value of the action request parameter is converted from snake_case to UpperCamelCase (PascalCase)
Then, for ajax requests, if the request parameter widget has been specified, as a response, the respective widget will be rendered. Otherwise? the widget XLite\View\Controller will be rendered.