PHP로 생년월일의 폼을 자작 함수로 해 Laravel의 blade로 사용해 보았다

소개



Laravel의 blade로, 폼에 생년월일 입력란을 만들려고 하고, 「생년월일 select copipe」로 조사해 copipe했을 때, 너무 길다고 생각했으므로,
PHP로 다시 작성하고 나서, Laravel의 blade로 표시시키는 곳까지 해 보았습니다.

index.blade.php
//~略

<option value="">-</option>
<option value="1900">1900</option>
<option value="1901">1901</option>
<option value="1902">1902</option>
<option value="1903">1903</option>
<option value="1904">1904</option>
<option value="1905">1905</option>
<option value="1906">1906</option>
<option value="1907">1907</option>
<option value="1908">1908</option>
<option value="1909">1909</option>
<option value="1910">1910</option>
<option value="1911">1911</option>
<option value="1912">1912</option>

//略)2021まで続く...
//...長い。

우선 원시 PHP로 테스트



나중에, 자작 함수로서 blade에 표시시킬 생각이었으므로, function내에 처리를 써, 호출하도록(듯이) 했습니다.
post로 받은 후에 년과 월과 일을 연결하여 date형으로 하고 싶었으므로, 월과 일은 value치를 str_pad() 로 0 메우게 했습니다.
→★코멘트보다, sprintf 쪽이 보다 편하다는 의견을 받았으므로, 변경했습니다. 더 똑똑해졌습니다. 고맙습니다.

test.php
<?php

//年
function yearSelect(){
    $n = date("Y"); //現在の年
    $y = $n - 125; //125年前からスタート
    for($y; $y<$n; $y++){
        echo '<option value="'.$y.'">'.$y.'</option>';
    }
}

//月
function monthSelect(){

     for($m=1; $m<=12; $m++){
         $pad = sprintf('%02d', $m) 
         //1~9までは前を0埋め,str_pad($m, 2 ,0, STR_PAD_LEFT)から変更
         echo '<option value="'.$pad.'">'.$m.'</option>';
     }
}

//日
 function daySelect(){
      for($d=1; $d<=31; $d++){
         $pad = sprintf('%02d', $d);
         //1~9までは前を0埋め,str_pad($d, 2 ,0, STR_PAD_LEFT)から変更
         echo '<option value="'.$pad.'">'.$d.'</option>';
      }
  }
?>

<!--略-->

<div>
  <select name="birthday_year">
      <option value="">-</option>
      <?php yearSelect(); ?>
  </select><select name="birthday_month">
      <option value="">-</option>    
      <?php monthSelect(); ?>
  </select><select name="birthday_day">
       <option value="">-</option>    
       <?php daySelect(); ?>
  </select></div>

<!--略-->


할 수 있었으므로, Laravel로 해 보겠습니다.

【Laravel】자작 함수용의 클래스를 작성



app 디렉토리에 Lib (선택 사항) 디렉토리를 만들고 MyFunction.php (선택 사항)를 만듭니다.
MyFunction 클래스 안에 static 메소드를 작성해 갑니다. (아까의 것을 static으로 해 부딪쳤을 뿐입니다.)
static의 해설로서는 이하가 알기 쉬웠습니다. 고맙습니다.
h tps : // f sh sh-enginee r. 하테나 bぉg. 코m/엔트리/2018/08/23/031829

app>MyFunction.php
<?php

namespace App\Lib;

class MyFunction
{

  public static function yearSelect(){
      $n = date("Y"); //現在の年
      $y = $n - 125; //125年前からスタート
      for($y; $y<$n; $y++){
          echo '<option value="'.$y.'">'.$y.'</option>';
      }
  }

  public static function monthSelect(){
      for($m=1; $m<=12; $m++){
         $pad = sprintf('%02d', $m) 
         //1~9までは前を0埋め,str_pad($m, 2 ,0, STR_PAD_LEFT)から変更
         echo '<option value="'.$pad.'">'.$m.'</option>';
      }
  }

  public static function daySelect(){
      for($d=1; $d<=31; $d++){
         $pad = sprintf('%02d', $d);
         //1~9までは前を0埋め,str_pad($d, 2 ,0, STR_PAD_LEFT)から変更
         echo '<option value="'.$pad.'">'.$d.'</option>';
      }
  }

}


【Laravel】별칭에 등록



config 디렉토리의 app.php에 있는 별칭(aliases) 안에
'클래스 이름' => App\Lib\파일 이름::class, 추가

config>app.php
'aliases' => [

        //~略
        'MyFunction' => App\Lib\MyFunction::class,
],

【Laravel】blade로 사용한다



{{ MyFunction::함수 (메소드) 이름}}

index.blade.php
<!---->
<li class="form-item">
   <p class="form-item-title">生年月日</p>
   <select name="birthday_year">
     <option value="">-</option>
     {{ MyFunction::yearSelect() }}
   </select>
   
   <select name="birthday_year">
     <option value="">-</option>
     {{ MyFunction::monthSelect() }}
   </select>
   
   <select name="birthday_year">
     <option value="">-</option>
     {{ MyFunction::daySelect() }}
   </select>
   
</li>
<!---->



안전하게 표시되었습니다. 끝.

결론



첫 Qlita 게시물이었습니다.
언제나 신세를 지고 있으므로, 자신도 생각해 투고해 보았습니다만, Qlita의 질을 낮추어 버리는 것은 제일 피하고 싶은 곳이므로, 만약 그 밖에 좋은 방법이나 잘못된 점 등 있으면 가르쳐 주시면 감사하겠습니다.

좋은 웹페이지 즐겨찾기