demo/app/Modules/Application/Traits/Request.php
2023-03-23 18:50:47 +01:00

68 lines
2.0 KiB
PHP

<?php
namespace LaraBB\Application\Traits;
/**
*
*/
trait Request
{
/**
* @param string $identifier
* @param array $except
* @return array
*/
public function getRules(string $identifier, array $except = []): array
{
$rules = config('application.validation.rules.' . $identifier);
$parts = explode('.', $identifier);
$field = $parts[1] ?? null;
// Mappe Einzelfeld-Regel so, als wären es mehrere Felder
if(!is_null($field)) {
$rules = [$field => $rules];
}
// Baue neues Regel-Array mit Regel-Bezeichner als Indizes auf
$rulesWithNameIndices = [];
foreach($rules as $field => $fieldRules) {
foreach($fieldRules as $index => $rule) {
$ruleWithParamters = explode(':', $rule);
$ruleIndex = count($ruleWithParamters) > 1 ? $ruleWithParamters[0] : $rule;
$rulesWithNameIndices[$field][$ruleIndex] = $rule;
}
}
return collect($rulesWithNameIndices)->except($except)->map(function($rules) {
return implode('|', $rules);
})->toArray();
}
/**
* @param string $identifier
* @param array $except
* @return array
*/
public function getMessages(string $identifier, array $except = []): array
{
$messages = config('application.validation.messages.' . $identifier);
$parts = explode('.', $identifier);
$field = $parts[1] ?? null;
return collect($messages)->except($except)->mapWithKeys(function($message, $key) use($field) {
// Messages für einzelnes Feld wurde angefordert ($mixedMessage = string)
if(!is_null($field)) {
return [$field . '.' . $key => $message];
}
$messageItems = [];
foreach($message as $messageKey => $messageValue) {
$messageItems[$key . '.' . $messageKey] = $messageValue;
}
return $messageItems;
})->toArray();
}
}