diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/App.php | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/src/App.php b/src/App.php index 1a12f6a..0c0773b 100644 --- a/src/App.php +++ b/src/App.php @@ -9,6 +9,8 @@ use Yosymfony\Toml\TomlBuilder; class App { + public string $formPath; + /** * App constructor. */ @@ -42,7 +44,7 @@ class App // GET if ($method == 'GET') { if (str_ends_with($path, '/fields')) { - $formPath = $contentRoot . str_replace('/fields', '', $path); + $this->formPath = $formPath = $contentRoot . str_replace('/fields', '', $path); $fields = $this->buildFields($formPath, $_GET['page'] ?? null); @@ -62,7 +64,7 @@ class App // POST else if ($method == 'POST') { if (str_ends_with($path, '/validate')) { - $formPath = $contentRoot . str_replace('/validate', '', $path); + $this->formPath = $formPath = $contentRoot . str_replace('/validate', '', $path); $fields = $this->buildFields($formPath, $_GET['page'] ?? null); @@ -70,7 +72,7 @@ class App } else if (str_ends_with($path, '/submit')) { - $formPath = $contentRoot . str_replace('/submit', '', $path); + $this->formPath = $formPath = $contentRoot . str_replace('/submit', '', $path); $fields = $this->buildFields($formPath); @@ -268,6 +270,11 @@ class App $field['is_valid'] = false; } + $validationFunctionName = 'validate_' . basename($this->formPath) . '_' . $field['name']; + if (function_exists($validationFunctionName)) { + $field = call_user_func($validationFunctionName, $field, $value); + } + return $field; } @@ -288,6 +295,12 @@ class App $config['api']['keys'] = $apiKeys; } + // include custom functions + $functionsFile = $currentDirectory . '/config/functions.php'; + if (file_exists($functionsFile)) { + include_once $functionsFile; + } + if (str_ends_with($currentDirectory, '/' . basename($_ENV['app']['contentFolderPath'])) || $currentDirectory == '/') { break; } |