diff --git a/common/framework/parsers/moduleactionparser.php b/common/framework/parsers/moduleactionparser.php
index 288c5d9f5..3b6bfca3c 100644
--- a/common/framework/parsers/moduleactionparser.php
+++ b/common/framework/parsers/moduleactionparser.php
@@ -80,6 +80,7 @@ class ModuleActionParser extends BaseParser
{
// Parse permissions.
$action_name = trim($action['name']);
+ $action_type = trim($action['type']);
$permission = trim($action['permission']);
$permission_info = (object)['target' => '', 'check_var' => '', 'check_type' => ''];
if ($permission)
@@ -93,7 +94,22 @@ class ModuleActionParser extends BaseParser
$route_attr = trim($action['route']);
$route_tags = $action->route ?: [];
$method_attr = trim($action['method']);
- $methods = $method_attr ? explode('|', strtoupper($method_attr)) : (starts_with('proc', $action_name) ? ['POST'] : ['GET', 'POST']);
+ if ($method_attr)
+ {
+ $methods = explode('|', strtoupper($method_attr));
+ }
+ elseif ($action_type === 'controller' || starts_with('proc', $action_name))
+ {
+ $methods = ['POST'];
+ }
+ elseif ($action_type === 'view' || starts_with('disp', $action_name))
+ {
+ $methods = ['GET'];
+ }
+ else
+ {
+ $methods = ['GET', 'POST'];
+ }
$route_arg = [];
if ($route_attr || count($route_tags))
{
@@ -117,7 +133,7 @@ class ModuleActionParser extends BaseParser
// Parse other information about this action.
$action_info = new \stdClass;
- $action_info->type = trim($action['type']);
+ $action_info->type = $action_type;
$action_info->grant = trim($action['grant']) ?: 'guest';
$action_info->permission = $permission_info;
$action_info->ruleset = trim($action['ruleset']);
diff --git a/tests/_data/module/module.xml b/tests/_data/module/module.xml
index 6e56e3c89..47e6b3650 100644
--- a/tests/_data/module/module.xml
+++ b/tests/_data/module/module.xml
@@ -12,7 +12,7 @@
-
+