
Michiana StransportationïŒ èªè»¢è»åº ïŒããæ®åœ±ããç»å
ããã§ãKontrolioãäœã§ãããããããªãå Žåã¯ãæåã®éšåã ããŒã¿ã管çãã ããèªãããšããå§ãããŸãã èŠããã«ãããã¯PHPã§æžãããç§ã®ããŒã¿æ€èšŒã©ã€ãã©ãªã§ãã
åã®èšäºã§ãç§ã¯èªåã®ã©ã€ãã©ãªãšä»ã®å©çšå¯èœãªãœãªã¥ãŒã·ã§ã³ãšã®æ¯èŒãæžãããšãçŽæããã®ã§ã仿¥ã¯Aura.Filter ã Respect Validation ã Sirius Validation ãããã³Valitronã䜿çšããæ€èšŒã«ã€ããŠèŠãŠãããŸãã
éçºäžã®ç¹å®ã®å
Œ
±ãµãŒãã¹ãããããšãæ³åããŠã¿ãŸããããããã«ã¯ããã¹ãŠã®æ©èœãžã®ãã«ã¢ã¯ã»ã¹ã®ããã®ãŠãŒã¶ãŒã®ç»é²ãå«ãŸããŸãã ãããã£ãŠãç»é²ãã©ãŒã ã«ã¯æ¬¡ã®ãã£ãŒã«ããå«ãŸããŸãã
- ååã æ£ç¢ºã«2ã€ã®åèªãå«ããå¿
èŠããããŸããæåã®åèªã¯ãŠãŒã¶ãŒåã§ã2çªç®ã®åèªã¯å§ã§ãã
- ãã°ã€ã³ããŸãã å€ãæž¡ãããå Žåãã©ãã³æåããã€ãã³ãã¢ã³ããŒã¹ã³ã¢ã®ã¿ã䜿çšãããŸãã
- ã¡ãŒã« æå¹ãªã¡ãŒã«ã¢ãã¬ã¹ãå«ããå¿
èŠããããŸãã
- ãã¹ã¯ãŒãã ã€ã³ã¹ããŒã«ããå¿
èŠããããé·ãã¯64æå以äžã§ããå¿
èŠããããŸãã
- åæããã å©çšèŠçŽãžã®åæã確èªããããã«ãŠãŒã¶ãŒãèšå®ããå¿
èŠãããå
žåçãªãã©ã°ã
ãããã£ãŠãæ¶ç©ºã®ãµãŒãã¹ã«ç»é²ããããã«ãŠãŒã¶ãŒãå
¥åããå¿
èŠããã5ã€ã®ãã£ãŒã«ãããããŸãã å®å
šã«ç¡å¹ãªããŒã¿ãåãåã£ããšæ³åããŠã¿ãŸãããã
$data = [ 'name' => '',
Aura.filter
Aura.Filterã䜿çšããæ€èšŒã¯ããã£ã«ã¿ãŒãã¡ã¯ããªããå§ãŸããŸãã åã
ã®å€ã§ã¯ãªãé
åãæ€èšŒãããããããããããµããžã§ã¯ããã£ã«ã¿ãŒããäœæããå¿
èŠããããŸãã
ã«ãŒã«ãå®çŸ©ãã
use Aura\Filter\FilterFactory; $filter = (new FilterFactory)->newSubjectFilter(); $filter->validate('name') ->isNotBlank() ->is('two_words') ->setMessage(' .'); $filter->validate('login') ->isBlankOr('alnum') ->setMessage(' , .'); $filter->validate('email') ->isNotBlank() ->is('email') ->setMessage(', . .'); $filter->validate('password') ->isNotBlank() ->is('strlenMax', 64) ->setMessage(', .'); $filter->validate('agreed') ->is('callback', function($subject, $field) { return $subject->{$field} === true; })->setMessage(' .');
ã芧ã®ãšãããã«ãŒã«ã®èª¬æã¯éåžžã«ç°¡åã§ãã Aura.Filterã¯ãããã«äœ¿ãã䟿å©ãªã«ãŒã«ã®ã»ããå
šäœãæäŸãããããã®ããã€ãã¯äžã®äŸã§äœ¿çšãããŠããŸã
- isNotBlankã¡ãœããã ãã£ãŒã«ããnullã«ã§ããªãããšã瀺ããŸãã
- 幎 ãã®ã«ãŒã«ã§ã¯ãã©ãã³æåã®ã¿ãèš±å¯ãããŸãã
- ã¡ãŒã« ãããŠãããã¯æããã§ã:)
- strlenMaxã
is
ã¡ãœããã®2çªç®ã®åŒæ°ã§æå®ãããé·ãããã£ãŒã«ããè¶
ããããªãããšã瀺ããŸãã
- ã³ãŒã«ããã¯ã ãã®ã¿ã€ãã®ã«ãŒã«ã¯ãKontrolioã®ã¯ããŒãžã£ãŒã«äŒŒãŠããŸãã ã¯ããŒãžã£ãŒã®åœ¢åŒã§ã«ãŒã«ãå®çŸ©ã§ããŸãã ãã®ã¯ããŒãžã£ã§ã¯ãAura.Filterããä»¶åãããã©ãŒã ããã®ããŒã¿ã®é
åãããã³ãã®å Žå
agreed
ãããã£ãŒã«ããæž¡ããŸãã
ãã£ãšããªãã¯ãç§ãtwo_words
ã«ãŒã«ãæå®ããªãã£ãããšã«æ°ã¥ããã§ãããã åœç¶ãAura.Filterã«ã¯ãã®ãããªã«ãŒã«ã¯ãªããããäœæããå¿
èŠããããŸãã ããã¥ã¡ã³ããŒã·ã§ã³ãèšãããã«ãããã¯ã«ãŒã«ã®ããã«å¥ã®ã¯ã©ã¹ã䜿çšããŠè¡ãããŸãïŒ
class UserNameRule { public function __invoke($subject, $field, $max = null) { $value = $subject->{$field}; if ( ! is_scalar($value)) { return false; } return (bool) preg_match('/^[A-Za-z]+\s[A-Za-z]+$/u', $value); } }
2çªç®ã®ã¹ãããã¯ããã£ã«ã¿ãŒãã¡ã¯ããªãŒã«æ°ããã«ãŒã«ãç¥ãããããšã§ãã ããã¯ãæåã®åŒæ°ãã«ãŒã«ã®é
åãšããŠãã£ã«ã¿ãŒãã¡ã¯ããªã«æž¡ãããšã§å®è¡ãããŸãã
次ã®ã¹ãããã¯ãæ°ããã«ãŒã«ãäœæããããã䜿çšããããšãAura.Filterã«éç¥ããããšã§ãã ããã¯ãã«ãŒã«ã®é
åããã¡ã¯ããªãŒã®æåã®åŒæ°ã«æž¡ãããšã§å®è¡ãããŸãã
use Aura\Filter\FilterFactory; $rules = [ 'two_words' => function() { return new UserNameRule; } ]; $filter = (new FilterFactory($rules))->newSubjectFilter();
ããã§ã two_words
ã«ãŒã«ã¯ãæšæºããã±ãŒãžã®ä»ã®ã«ãŒã«ãšåãæ¹æ³ã§äœ¿çšã§ããŸãã
ãã£ãŒãããã¯
èŠããŠããããã«ãåãã£ãŒã«ãã«ééã£ãå€ãå«ãŸããŠãããããŸã£ããå«ãŸããŠããªããããæ€èšŒããå
¥åããŒã¿ã¯å®å
šã«ç¡å¹ã§ãã ãããã£ãŠãæ€èšŒã®çµæãšããŠããšã©ãŒããã³ãšã©ãŒã«é¢ãã察å¿ããã¡ãã»ãŒãžãåãåããšæ³å®ãããŸãã
次ã®ããã«Aura.Filterã§æ€èšŒããŸãã
$valid = $filter->apply($data); if ( ! $valid) { $failures = $filter->getFailures(); $messages = $failures->getMessages(); }
é
åã¯$ messagesã«æžã蟌ãŸãããããã¡ãã»ãŒãžã衚瀺ããã«ã¯ããã¹ãããã2ã€ã®foreachãå¿
èŠã§ãã
<ul class="errors"> <?php foreach ($messages as $field => $errors) { foreach ($errors as $error) { printf('<li class="error">%s</li>', $error); } } ?> </ul>
æ€èšŒã®å°é
æ¯èŒã§äœ¿çšãã2çªç®ã®ã©ã€ãã©ãªã¯ã Respect ValidationãšåŒã°ããæ¯èŒçäžè¬çãªãœãªã¥ãŒã·ã§ã³ã§ãã 人ã
ã¯åœŒå¥³ãä¿¡é ŒããŠããã®ã§ãèŠãã¹ããã®ããããšæããŸãã
å®éšã®çŽåºŠã®ããã«ãã©ã€ãã©ãªãæ¯èŒãããšããæåã«å®çŸ©ãããåãããŒã¿ã»ããã䜿çšããŸãã
use Respect\Validation\Validator as v; $data = [ 'name' => '',
ã«ãŒã«ãå®çŸ©ãã
Aura.Filterãšåæ§ã«ããŠãŒã¶ãŒåã«ç¬èªã®æ€èšŒã«ãŒã«ãå¿
èŠãªã®ã§ãå§ããŸãããïŒ
namespace MyNamespace; use Respect\Validation\Rules\AbstractRule; class UserNameRule extends AbstractRule { public function validate($input) { return (bool) preg_match('/^[A-Za-z]+\s[A-Za-z]+$/u', $input); } }
å€éšã«ãŒã«APIã¯Aura.Filterãšã»ãŒåãã§ãã__invokeïŒïŒããžãã¯ã®ä»£ããã«validateïŒïŒã¡ãœããã®ã¿ã䜿çšãããŸãã ç§ã«ãšã£ãŠããã®APIã¯ããã·ã³ãã«ã§çè§£ããããããã«èŠããŸããã ãŸããããã¯Kontrolioã«è¿ãã§ã:)
ããã¥ã¡ã³ãã«ã¯ããã«é¢ããèšåã¯ãããŸããã§ããããã«ãŒã«èªäœã«å ããŠãç¬èªã®ã¿ã€ãã®äŸå€ãäœæããå¿
èŠããããŸãã äŸå€ã¯ã©ã¹ã®ååã¯ãã«ãŒã«ã®ã¯ã©ã¹åãšäŸå€ã®æ¥å°ŸèŸã§æ§æããå¿
èŠããããŸãã
use Respect\Validation\Exceptions\NestedValidationException; class UserNameRuleException extends NestedValidationException {
ããŠãæåŸã«ãããŒã¿ãæ€èšŒã§ããŸãã æåã«ãããªããŒã¿ãŒã«æ°ããã«ãŒã«ãæž¡ããŠã圌ãããã«ã€ããŠåŠç¿ããå°æ¥äœ¿çšã§ããããã«ããŸãã Respect Validationã§ã¯ã withïŒïŒã¡ãœãããåŒã³åºããŠãéæšæºã®ã«ãŒã«ãå«ãããŒã ã¹ããŒã¹ãæž¡ãããšã§ãããè¡ããŸãã
v::with('MyNamespace\\');
ããã§ã MyNamespaceåå空éã«ãããã¹ãŠã®éæšæºã«ãŒã«ãããªããŒã¿ãŒã«ãã£ãŠãèªèããããŸãã æ¬¡ã®ã¹ãããã¯ãå¿
èŠãªã«ãŒã«ãèšè¿°ããæ€èšŒãå®è¡ããããšã§ãã
v::attribute('name', v::userNameRule()) ->attribute('login', v::alnum('-_')) ->attribute('email', v::email()) ->attribute('password', v::notEmpty()->stringType()->length(null, 64)) ->attribute('agreed', v::trueVal()) ->assert((object) $data);
name屿§ã«ã«ãŒã«ãé©çšããæ¹æ³ã«æ³šç®ããŠãã ããã ããã§ã¯ãã¯ã©ã¹ã«ãŒã«ã®ååãããªããŒã¿ã¡ãœããã®ååã«å€æãããŸããã äžè¬ã«ãæ®ãã®ã«ãŒã«ã¯çŽæçã§ãã
ãããšã¯å¥ã«ã $ããŒã¿é
åããªããžã§ã¯ãã«ãã£ã¹ãããçç±ã«èšåãã䟡å€ããããŸãã äºå®ã¯ãRespect Validationã¯é
åã§ã¯ãªãå
¥åãšããŠãªããžã§ã¯ããåãå
¥ãããšããããšã§ãã ãã®ã©ã€ãã©ãªã䜿çšããŠéçºããå Žåã¯ããããèæ
®ããå¿
èŠããããŸãã
ãã£ãŒãããã¯
Aura.Filterãšã¯ç°ãªããRespectããªããŒã¿ãŒã¯æ€èšŒã倱æãããšäŸå€ãã¹ããŒããŸãã ãŸãããã®äŸå€ã«ã¯æ€èšŒãšã©ãŒã¡ãã»ãŒãžãå«ãŸããŠããŸãã ãããã£ãŠãä»ç€ºããäŸã¯æ¬¡ã®ããã«èšè¿°ããå¿
èŠããããŸãã
try { v::with('RespectValidationExample\\'); v::attribute('name', v::userNameRule()) ->attribute('login', v::alnum('-_')) ->attribute('email', v::email()) ->attribute('password', v::notEmpty()->stringType()->length(null, 64)) ->attribute('agreed', v::trueVal()) ->assert((object) $data); } catch (NestedValidationException $ex) { $messages = $ex->getMessages(); }
getMessagesïŒïŒã䜿çšããŠãæ€èšŒããã»ã¹äžã«ããªããŒã¿ãŒãåéãããã¹ãŠã®ã¡ãã»ãŒãžã®ãã©ããé
åãååŸããŸãã é
åããã³ããããšã次ã®ãããªçµæãåŸãããŸãã
array(5) { [0] => string(29) âData validation failed for %sâ [1] => string(60) âlogin must contain only letters (az), digits (0â9) and â-_ââ [2] => string(25) âemail must be valid emailâ [3] => string(26) âpassword must not be emptyâ [4] => string(32) âAttribute agreed must be presentâ }
ã¡ãã»ãŒãžã¯èªåã§äº€æã§ããŸãã ããããç§ã¯ãã®ã©ã€ãã©ãªãäœããã®åœ¢ã§èª€è§£ããŠãããããããŸãããããã®ããã»ã¹ã¯ç§ã«ã¯ããã»ã©æçœã§ã¯ãªãããã§ããåŠçãããäŸå€ã§findMessagesïŒïŒã¡ãœããã䜿çšããå¿
èŠããããŸãã
$ex->findMessages([ 'userNameRule' => ' .', 'alnum' => ' .', 'email' => ' e-mail.', 'notEmpty' => ' ?', 'agreed' => ', .' ]);
ééããäœãªã®ãã¯ããããŸããããçè§£ã§ããªãã£ãããšãããã€ããããŸãã äžèšã®æ¹æ³ã§ã«ãŒã«ãå®çŸ©ãããšã次ã®ããã«ãªããŸãã
array(5) { [0] => string(40) â .â [1] => string(31) â .â [2] => string(25) âemail must be valid emailâ [3] => string(5) â ?â [4] => string(9) â, .â }
ã芧ã®ãšãããé»åã¡ãŒã«ãã£ãŒã«ãã®ã¡ãã»ãŒãžã¯é©çšããããæšæºã®ãŸãŸã§ãã ããããã€ã³ããã¯ã¹4ã®èåŸã«ããã¡ãã»ãŒãžã¯éã§ãïŒ ããã¯ãã«ãŒã«ã®ååã§ã¯ãªãããã£ãŒã«ãã®ååã䜿çšããã«ããããããã§ãã äžæ¹ãã«ãŒã«ã®ååïŒtrueValïŒã䜿çšããå Žåãã¡ãã»ãŒãžã¯ã©ããã§å€±ãããŸãã ãã®ã©ã€ãã©ãªã®çµéšè±å¯ãªãŠãŒã¶ãŒã«ããã³ã¡ã³ãã¯å€§æè¿ã§ãã
ã·ãªãŠã¹æ€èšŒ
ã§ã¯ã次ã®ã©ã€ãã©ãªã«ç§»ããåæ§ã®ã¿ã¹ã¯ãã©ã®ããã«åŠçããããèŠãŠã¿ãŸãããã
ã«ãŒã«ãå®çŸ©ãã
ç¹°ãè¿ããŸããããŠãŒã¶ãŒåã®ã«ãŒã«ãå®çŸ©ããå¿
èŠããããŸãã æ¬¡ã®ããã«èšè¿°ããŸãã
class UserNameRule extends AbstractRule {
ãã§ã«æ€èšãããŠããã©ã€ãã©ãªãšæ¯èŒããã¢ãããŒãã®éãã«æ³šæããŠãã ããã ããããã£ãã¡ãœããããŸãã¯ã«ãŒã«åŒæ°ã䜿çšããã®ã§ã¯ãªãã宿°ã§2çš®é¡ã®ã¡ãã»ãŒãžãå®çŸ©ããŸãã
次ã«ãæ€èšŒããžãã¯ã«ã€ããŠèª¬æããŸãã
$validator = new Validator; $validator ->add('name', 'required | MyApp\Validation\Rule\UserNameRule') ->add('login', 'required | alphanumhyphen', null, ' , .') ->add('email', 'required | email', null, ', e-mail.') ->add('password', 'required | maxlength(64)', null, ' , .') ->add('agree', 'required | equal(true)', null, ' ?');
ã芧ã®ãšãããã«ãŒã«ã®ã»ããã¯éåžžã«ã·ã³ãã«ã§èªã¿ãããã§ãã 説æã®ããã«ãæ°Žå¹³ããã·ã¥ã§åºåãããååã䜿çšããŸãã ãã®ã¢ãããŒãã¯ãLaravelãšKontrolioã§äœ¿çšãããŠããã¢ãããŒãã«äŒŒãŠããŸãã
addïŒïŒã¡ãœããã®4çªç®ã®åŒæ°ã¯ãæ€èšŒã倱æããå Žåã«Siriusã䜿çšããæ€èšŒãšã©ãŒã¡ãã»ãŒãžã瀺ããŸãã æ°ããUserNameRuleã«ãŒã«ã«ã¡ãã»ãŒãžã远å ããªãã£ãã®ã¯ãªãã§ããïŒ
$validator->add('name', 'required | MyApp\Validation\Rule\UserNameRule')
ããã¯ãã¡ãã»ãŒãžãã¯ã©ã¹å®æ°ã§æ¢ã«èšè¿°ãããŠããããã§ãã
class UserNameRule extends AbstractRule {
å¥ã®ãªãã·ã§ã³ã¯ãããªããŒã¿ãŒèªäœã®addMessageïŒïŒã¡ãœããã䜿çšããããšã§ãã
$validator->addMessage('email', ', e-mail.');
ã«ã¹ã¿ã ã«ãŒã«ã¯ã¯ã©ã¹ã®ãã«ããŒã ã§èå¥ãããŸãããKontrolioã§ã¯ãšã€ãªã¢ã¹/ãšã€ãªã¢ã¹ãèšå®ã§ããŸãã
ãã£ãŒãããã¯
æ€èšŒãå®è¡ããã«ã¯ãããªããŒã¿ãŒã®validateïŒïŒã¡ãœãããåŒã³åºããããŒã¿ãæž¡ããŸãïŒ
$data = [ 'name' => '',
Respectãšã¯ç°ãªããSiriusã¯äŸå€ãã¹ããŒãããåã«falseãè¿ããŸã ã æ€èšŒãšã©ãŒã¡ãã»ãŒãžã¯ã getMessagesïŒïŒããªããŒã¿ã¡ãœãããä»ããŠååŸã§ããŸãã 屿§ããšã«ã°ã«ãŒãåããããšã©ãŒãè¿ãããããšã©ãŒãééããã«ã¯2ã€ã®foreachã«ãŒããå¿
èŠã§ãã
foreach ($validator->getMessages() as $attribute => $messages) { foreach ($messages as $message) { echo $message->getTemplate() . "\n"; } }
ããã§ã$ messageã¯Sirius \ Validation \ ErrorMessageã¯ã©ã¹ã®ãªããžã§ã¯ãã§ãããå¿
èŠãªã¡ãã»ãŒãžãè¿ãgetTemplateïŒïŒã¡ãœããããããŸãã
ããªããã³
ããã«é²ã¿ãŸãããã å¥ã®è峿·±ããœãªã¥ãŒã·ã§ã³ã¯ã Valitronã§ãã ããªããã³ã¯ãæ€èšŒã«ãŒã«ã®è¿œå ãšèšè¿°ã®å®è£
ã«ãããŠä»ãšç°ãªããŸãã
ã«ãŒã«ãå®çŸ©ãã
æåã®éãïŒæ°ããã«ãŒã«ã远å ããã«ã¯ãå¥ã®ã¯ã©ã¹ãäœæããå¿
èŠã¯ãããŸããã ããŒã«å€ã®çµæãè¿ãã¯ããŒãžã£ã䜿çšããã ãã§ãã
ã«ã¹ã¿ã ã«ãŒã«ã远å ããããã«ãValitronã«ã¯éçãªaddRuleïŒïŒã¡ãœããããããŸãããã®ã¡ãœããã§ã¯ãæåã®2ã€ã®åŒæ°ãå¿
é ã§ã3çªç®ã®åŒæ°ã¯ãªãã·ã§ã³ã§ãã ããã§ã¯ãã«ãŒã«ã®èå¥åãããžãã¯ããšã©ãŒã¡ãã»ãŒãžãããã«1ãæã«è¡šç€ºãããããããã®æ¹æ³ãæ°ã«å
¥ããŸããã
use Valitron\Validator; Validator::addRule('two_words', function($field, $value) { return (bool) preg_match('/^[A-Za-z]+\s[A-Za-z]+$/u', $value); }, ' .');
2çªç®ã®éãã¯ãã«ãŒã«ã屿§ã«é©çšãããæ¹æ³ã§ãã ãããŸã§ã®ãã¹ãŠã®ã±ãŒã¹ã§ã屿§ãæ¬æ¥ã®ãã®ã§ããããšãããããŸããã
Valitronã¯éã®æ¹æ³ã§ãæåã«æ€èšŒã«ãŒã«ãèšå®ããŸããã ã«ãŒã«ãèšè¿°ãããšãããããã®ã«ãŒã«ã«å±æ§ãé©çšããŸããéã®å Žåãåæ§ã§ãã
$validator = new Validator($data); $validator ->rule('two_words', 'name')->label('') ->rule('required', [ 'name', 'login', 'email', 'password', 'agreed' ]) ->rule('slug', 'login') ->rule('email', 'email') ->rule('accepted', 'agreed');
äŸãããããããã«ã ruleïŒïŒã¡ãœããã§ã¯ãæåã«ã«ãŒã«ã®ååãèšè¿°ããæ¬¡ã«ãã®ã«ãŒã«ã«å¯Ÿå¿ããå¿
èŠã®ãã屿§ãæå®ããŸãã ããæçœãªäŸã¯ããã®ã«ãŒã«ã«å±æ§ãã©ã®ããã«ãå±ããããã瀺ãrequired
ã«ãŒã«ã§ãã
ValitronïŒããã³ç§ãã¡ãæ€èšãããã®ä»ã®ãœãªã¥ãŒã·ã§ã³ïŒã¯ãæšæºãšã©ãŒã¡ãã»ãŒãžãæäŸããŸãã ããããåçŽã«äœ¿çšãããšãåã¡ãã»ãŒãžã察å¿ãã屿§ã®ååã§å§ãŸãããšãããããŸãã
æšæºä»¥å€ã®ãšã©ãŒã¡ãã»ãŒãžã䜿çšãããŠããå Žåã§ããValitronã¯ã¡ãã»ãŒãžæ¬æã®å±æ§åã眮ãæããŸãã ãã®ãããç©ºã®æååã§labelïŒïŒã¡ãœããã䜿çšããŠå±æ§åãåé€ããŸããã
$validator->rule('two_words', 'name')->label('')
ãã£ãŒãããã¯
å
·äœçã«ã¯ãæ€èšŒã«é¢ããŠã¯ãValitronã©ã€ãã©ãªAPIã¯ããã®èšäºã§æ¢ã«èŠããã®ãšã»ãšãã©å€ãããŸããã æ€èšŒãå®è¡ããã«ã¯ã validateïŒïŒããªããŒã¿ã¡ãœãããåŒã³åºããŸãã
$validator->validate();
æ€èšŒãšã©ãŒã¡ãã»ãŒãžã¯ã getErrorsïŒïŒã¡ãœããã䜿çšããŠååŸã§ããŸãã
$validator->errors();
ããã§ã®ã¡ãã»ãŒãžã¯ãSirius Validationãšåãæ¹æ³ã§å±æ§ã«ãã£ãŠã°ã«ãŒãåãããŸãããã¡ãã»ãŒãžçšã®åå¥ã®ã¯ã©ã¹ã¯ãªããéåžžã®å€æ¬¡å
é
åãååŸããŸãã
foreach ($validator->errors() as $attribute => $messages) { foreach ($messages as $message) { echo $message . "\n"; } }
ã³ã³ãããªãª
ãããŠæåŸã«ã仿¥ã®æåŸã®ã©ã€ãã©ãªã¯KontrolioãšåŒã°ããç§èªèº«ã®éçºã§ã ã
ã«ãŒã«ãå®çŸ©ãã
ç¹°ãè¿ãã«ãªããŸããã5åç®ã¯ããŠãŒã¶ãŒåã®æ€èšŒã«ãŒã«ãäœæããŸãã ãã¹ãŠãæ¯èŒçã·ã³ãã«ã§æšæºçã§ãïŒ
namespace MyProject\Validation\Rules; use Kontrolio\Rules\AbstractRule; class TwoWords extends Kontrolio\Rules\AbstractRule { public function isValid($input = null) { return (bool) preg_match('/^[A-Za-z]+\s[A-Za-z]+$/u', $input); } }
次ã«ããã¡ã¯ããªãäœæãã extendïŒïŒã¡ãœããã䜿çšããŠãã®äžã«ã«ãŒã«ãç»é²ããŸãã
namespace MyProject; use Kontrolio\Factory; use MyProject\Validation\Rules\TwoWords; $factory = Kontrolio\Factory::getInstance()->extend([TwoWords::class]);
ã«ãŒã«ãç»é²ããåŸãååã§two_words
ãå«ããŠäœ¿çšã§ããŸãã ããªããŒã¿ãŒãäœæããŸãããïŒ
$data = [ 'name' => '',
ãã詳现ãªããŒãžã§ã³ã䜿çšããããšãã§ããŸãããLaravelã§äœ¿çšãããæ§æãšåæ§ã®æ§æã䜿çšããŠã«ãŒã«ã説æããŸããã
$rules = [ 'name' => new TwoWords, 'login' => [new Sometimes, new Alphadash], 'email' => new Email, 'password' => new Length(1, 64), 'agreed' => new Accepted ];
ãã£ãŒãããã¯
æ€èšŒã¯ãåãvalidateïŒïŒã¡ãœããã§éå§ãããŸãã
$validator->validate();
getErrorsïŒïŒãŸãã¯getErrorsListïŒïŒã¡ãœããã®ããããã䜿çšããŠãšã©ãŒã¡ãã»ãŒãžãååŸã§ããããã«ãªããŸããã æåã®ã¡ãœããã¯ããè€éãªãšã©ãŒåºåãå¯èœã«ãã2çªç®ã®ã¡ãœããã¯ãã©ããé
åãè¿ããŸãã getErrorsïŒïŒã䜿çšããŠã次ã®ãããªã¡ãã»ãŒãžã衚瀺ã§ããŸãã
<ul class="errors"> <?php foreach ($errors as $attribute => $messages): ?> <li class="errors__attribute"> <b><?= $attribute; ?></b> <ul> <?php foreach ($messages as $message): ?> <li><?= $message; ?></li> <?php endforeach; ?> </ul> </li> <?php endforeach; ?> </ul>
ãŸãã getErrorsListïŒïŒã䜿çšãããšãã¡ãã»ãŒãžã®ããåçŽãªãªã¹ããäœæã§ããŸãã
<?php $errors = $validator->getErrorsList(); ?> <ul class="errors"> <?php foreach($errors as $error): ?> <li class="errors__error"><?= $error; ?></li> <?php endforeach; ?> </ul>
ãŸãšã
ãã®èšäºã§ã¯ã次ã®ã©ã€ãã©ãªãŒã®äœ¿çšäŸã瀺ããŸããã
- Aura.filter
- æ€èšŒã®å°é
- ã·ãªãŠã¹æ€èšŒ
- ããªããã³
- ã³ã³ãããªãª
ãå®äžçã®äŸãã¯åçŽãããããã«æãããããããŸããã 確ãã«ãã©ã€ãã©ãªã®æ©èœã®äžéšã¯èšäºã«å«ãŸããŠããªããããåæããå¿
èŠããããŸãã ååãšããŠããããããªãã«ãšã£ãŠè峿·±ãå Žåã¯ãèªåã§ãã®æ©èœã調ã¹ãããšãã§ããŸãã
åã©ã€ãã©ãªã¯ç¬èªã®ããããæäŸãããã®æãåŽé¢ãæã£ãŠããã®ã§ã奜ã¿ãšã¿ã¹ã¯ã®åé¡ã ãšæã-ãããéžæããããšã
èªãã§ãããŠããããšãã æ£ããéžæãããŠãã ããã