1
안녕하세요 저는 laravel 프로젝트의 입력 데이터에 대한 사용자 지정 유효성 검사를 작성하고 있습니다. 나는 나이를 얻고 그가 16 이상인지 확인하기 위해 Carbon :: createFromDate() -> age를 사용하고있다. 분리 기호가 분리 기호는 InvalidArgumentException Carbon :: createFromDate() -> age
$의 한국은 올해 (1996 예.) $의 miesiac는 달와 $ dzien는 날이다. Pesel은 폴란드 시민의 고유 ID 번호입니다. "년 : 2백15억8천6백73만8천4백27개월 : 1,900,167일 : 9001727"
pesel에서 나는 (년, 월, 일)좀 큰 숫자를 받고 있어요 그리고 난 그들이 여기에서 의미하는 DD 알고하지 않는 날짜를 얻을
은 여기 내 AppServiceProvider
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Carbon\Carbon;
use Validator;
use Log;
class AppServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
//Custom validator for pesel validation
Validator::extend('pesel',function($attribute,$value,$parameters)
{
$v = $value;
//check if psesel is 11 chars long
if (strlen($v) != 11)
{
Log::info("Pesel is not 11 chars long");
return;
}
//check whether all chars are numbers
$aInt = array();
for($i = 0; $i < 11; $i++)
{
$val = substr($v,$i+1);
$valInt = (int) $val;
$aInt[$i] = $valInt;
if(is_nan($aInt[$i]))
{
Log::info("User inserted invalid number");
return;
}
}
//check control sum
$wagi = [1,3,7,9,1,3,7,9,1,3,1];
$sum = 0;
for($i = 0;$i < 11;$i++)
{
$sum += $wagi[$i]*$aInt[$i];
if(Log::info(($sum%10)!=0))
{
return;
}
//count the year,month,and day from pesel
$rok = 1900+$aInt[0]*10+$aInt[1];
if($aInt[2]>=2 && $aInt[2]<8)
{
$rok += floor($aInt[2]/2)*100;
}
if($aInt[2]>=8)
{
$rok -= 100;
}
$miesiac = ($aInt[2]%2)*10+$aInt[3];
$dzien = $aInt[4]*10+$aInt[5];
Log::info("Parsing the date in carbon");
//validate whether user is 16 years or more
$userAge = Carbon::createFromDate($rok, $miesiac, $dzien,'Europe/Warsaw')->age;
if($userAge < 16)
{
Log::info("user is not 16 or more");
return;
}
}
});
}
/**
* Register any application services.
*
* @return void
*/
public function register()
{
//
}
}
당신은'$의 rok','$ miesiac' 및의 값을 지정할 수 있습니다 작동
해야 잘못 dizen'? –
$ rok는 한 해 (1996 년 예) $ miesiac은 한 달이고 $ dzien은 일입니다. Pesel은 폴란드 시민의 고유 ID 번호입니다. pesel에서 날짜를 얻습니다. (연, 월, 일) –
정말로 그 중 3 개를 모두 dd() 할 수 있고 그 결과를 질문에 추가 할 수 있습니까? –