From 75f3e8ab4b3d65d6eba16575ca0a4a669b7e27ac Mon Sep 17 00:00:00 2001 From: Daniel Weipert Date: Thu, 6 Jan 2022 01:36:07 +0100 Subject: Validate fields with custom function --- src/App.php | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) (limited to 'src') 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; } -- cgit v1.2.3