年月を表示させるプルダウンを作成しております。
要件は下記の通りです。
+++++++++++++++++++++++++++++++++++++++++++
1.当月から半年前までの年月と翌月の年月を表示させる。
2.ただし、201805以前の年月はプルダウンに表示させないようにする。
+++++++++++++++++++++++++++++++++++++++++++
上記要件を満たすコードを書いたところ、HTMLが下記のような長いコードになってしまいました。
HTML
1 <div class="form-group"> 2 <label for="number" class="control-label col-xs-5">年月</label> 3 <div class="col-xs-3"> 4 <select class="form-control" id="number" name="yyyymm"> 5 <option value="">選択してください</option> 6 [% IF (last_2month == 201805) %] 7 <option value="[% last_1month %]">[% last_1month %]</option> 8 <option value="[% this_month %]">[% this_month %]</option> 9 <option value="[% after_1month %]">[% after_1month %]</option> 10 [% ELSIF (last_3month == 201805) %] 11 <option value="[% last_2month %]">[% last_2month %]</option> 12 <option value="[% last_1month %]">[% last_1month %]</option> 13 <option value="[% this_month %]">[% this_month %]</option> 14 <option value="[% after_1month %]">[% after_1month %]</option> 15 [% ELSIF (last_4month == 201805) %] 16 <option value="[% last_3month %]">[% last_3month %]</option> 17 <option value="[% last_2month %]">[% last_2month %]</option> 18 <option value="[% last_1month %]">[% last_1month %]</option> 19 <option value="[% this_month %]">[% this_month %]</option> 20 <option value="[% after_1month %]">[% after_1month %]</option> 21 [% ELSIF (last_5month == 201805) %] 22 <option value="[% last_4month %]">[% last_4month %]</option> 23 <option value="[% last_3month %]">[% last_3month %]</option> 24 <option value="[% last_2month %]">[% last_2month %]</option> 25 <option value="[% last_1month %]">[% last_1month %]</option> 26 <option value="[% this_month %]">[% this_month %]</option> 27 <option value="[% after_1month %]">[% after_1month %]</option> 28 [% ELSIF (last_6month == 201805) %] 29 <option value="[% last_5month %]">[% last_5month %]</option> 30 <option value="[% last_4month %]">[% last_4month %]</option> 31 <option value="[% last_3month %]">[% last_3month %]</option> 32 <option value="[% last_2month %]">[% last_2month %]</option> 33 <option value="[% last_1month %]">[% last_1month %]</option> 34 <option value="[% this_month %]">[% this_month %]</option> 35 <option value="[% after_1month %]">[% after_1month %]</option> 36 [% ELSE %] 37 <option value="[% last_6month %]">[% last_6month %]</option> 38 <option value="[% last_5month %]">[% last_5month %]</option> 39 <option value="[% last_4month %]">[% last_4month %]</option> 40 <option value="[% last_3month %]">[% last_3month %]</option> 41 <option value="[% last_2month %]">[% last_2month %]</option> 42 <option value="[% last_1month %]">[% last_1month %]</option> 43 <option value="[% this_month %]">[% this_month %]</option> 44 <option value="[% after_1month %]">[% after_1month %]</option> 45 [% END %] 46 </select> 47 </div> 48 </div>
もっと簡潔に済む方法があればご教示いただけますと幸いです。
よろしくお願いいたします。
Contoroller
perl
1sub fuga_diary { 2 my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(time); 3 4 my $last_6month = sprintf("%04d%02d", $year + 1900, $mon - 5); 5 my $last_5month = sprintf("%04d%02d", $year + 1900, $mon - 4); 6 my $last_4month = sprintf("%04d%02d", $year + 1900, $mon - 3 ); 7 my $last_3month = sprintf("%04d%02d", $year + 1900, $mon - 2); 8 my $last_2month = sprintf("%04d%02d", $year + 1900, $mon - 1); 9 my $last_1month = sprintf("%04d%02d", $year + 1900, $mon ); 10 my $this_month = sprintf("%04d%02d", $year + 1900, $mon + 1); 11 my $after_1month = sprintf("%04d%02d", $year + 1900, $mon + 2) 12 13 my %result_diary = ( 14 'last_6month' => $last_6month, 15 'last_5month' => $last_5month, 16 'last_4month' => $last_4month, 17 'last_3month' => $last_3month, 18 'last_2month' => $last_2month, 19 'last_1month' => $last_1month, 20 'this_month' => $this_month, 21 'after_1month' => $after_1month, 22 ); 23 24 return \%result_diary; 25}
Logic
Perl
1sub index :Path :Args(0) { 2 my ( $self, $c ) = @_; 3 $c->stash->{template} = "hoge.tt"; 4 my $fuga_logic = $c->model("Logic::Hogehoge"); 5 6 my $result_diary = $fuga_logic->fuga_diary; 7 8 9 $c->stash->{last_6month} = $result_diary->{last_6month}; 10 $c->stash->{last_5month} = $result_diary->{last_5month}; 11 $c->stash->{last_4month} = $result_diary->{last_4month}; 12 $c->stash->{last_3month} = $result_diary->{last_3month}; 13 $c->stash->{last_2month} = $result_diary->{last_2month}; 14 $c->stash->{last_1month} = $result_diary->{last_1month}; 15 $c->stash->{this_month} = $result_diary->{this_month}; 16 $c->stash->{after_1month} = $result_diary->{after_1month}; 17}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/07/01 06:05 編集
2018/07/01 06:20
2018/07/01 06:44 編集
2018/07/01 16:47
2018/07/01 17:13