We were unable to load Disqus. If you are a moderator please see our troubleshooting guide.
I made some adjustments to allow passing in `messages` from the traits as well:
public function withValidator(Validator $validator) { if ($rulesAndMessages = $this->getTraitRulesAndMessages()) { $validator->addRules($rulesAndMessages['rules']); $validator->customMessages = array_merge($validator->customMessages, $rulesAndMessages['messages']); } } protected function getTraitRulesAndMessages() { return array_reduce(class_uses(static::class), function ($rulesAndMessages, $trait) { preg_match('/^Has([A-Za-z]+)Fields$/', class_basename($trait), $matchTraitConvention); if ($traitSubject = isset($matchTraitConvention[1]) ? $matchTraitConvention[1] : null) { $rulesAndMessages['rules'] = array_merge($rulesAndMessages['rules'], $this->getTraitRules($traitSubject)); $rulesAndMessages['messages'] = array_merge($rulesAndMessages['messages'], $this->getTraitMessages($traitSubject)); } return $rulesAndMessages; }, array_fill_keys(['messages', 'rules'], [])); } protected function getTraitRules($traitSubject) { $methodName = camel_case($traitSubject) . 'Rules'; return method_exists($this, $methodName) ? $this->{$methodName}() : []; } protected function getTraitMessages($traitSubject) { $methodName = camel_case($traitSubject) . 'Messages'; return method_exists($this, $methodName) ? $this->{$methodName}() : []; }
Sorry for the bad formatting...
Cool, I just replaced my merging with your method! Thanks for sharing this :)
I made some adjustments to allow passing in `messages` from the traits as well:
public function withValidator(Validator $validator)
{
if ($rulesAndMessages = $this->getTraitRulesAndMessages()) {
$validator->addRules($rulesAndMessages['rules']);
$validator->customMessages = array_merge($validator->customMessages, $rulesAndMessages['messages']);
}
}
protected function getTraitRulesAndMessages()
{
return array_reduce(class_uses(static::class), function ($rulesAndMessages, $trait) {
preg_match('/^Has([A-Za-z]+)Fields$/', class_basename($trait), $matchTraitConvention);
if ($traitSubject = isset($matchTraitConvention[1]) ? $matchTraitConvention[1] : null) {
$rulesAndMessages['rules'] = array_merge($rulesAndMessages['rules'], $this->getTraitRules($traitSubject));
$rulesAndMessages['messages'] = array_merge($rulesAndMessages['messages'], $this->getTraitMessages($traitSubject));
}
return $rulesAndMessages;
}, array_fill_keys(['messages', 'rules'], []));
}
protected function getTraitRules($traitSubject)
{
$methodName = camel_case($traitSubject) . 'Rules';
return method_exists($this, $methodName) ? $this->{$methodName}() : [];
}
protected function getTraitMessages($traitSubject)
{
$methodName = camel_case($traitSubject) . 'Messages';
return method_exists($this, $methodName) ? $this->{$methodName}() : [];
}