jidaikobo です。GIJOE さん、ご勘案ありがとうございます!
で、さっそく1.08で遊んでみたんですが、ちょっと気になることがあり、ご報告させてください。
1.08だと、オリジナルのエラーを吐こうとすると、エラー報告が2段階に分かれちゃいます。
たとえば下記のような入力必須項目を用意してみたんですが……
if( ! empty( $_POST['do_register'] )){
if($_POST['familyname']==''){
$stop_reason_extras[] = "姓は入力必須項目です。<br />";
}
}
新規登録でいっさい入力せずにエンターすると、まずは minihaku の config のエラーからのみ処理されます。つまりエラーは「姓は入力必須項目です。」だけが表示されます。
で、このエラーを乗り越えると、あらためて ID を入れなさい、とかパスワードを入れなさい、というエラーが来ます。
これはどうやら54行目で、$stop_reason_extras の処理をしてから従来のエラーを処理しているからのようでして、段階を分けると、一発でエラーがくるようです。
if( ! empty( $_POST['do_register'] ) && empty( $stop_reason_extras ) && ! ( $stop_reason = userCheck( $allowed_requests['uname'] , $email4check , $allowed_requests['pass'] , $allowed_requests['vpass'] ) ) ) {
を下記のようにすると、エラーが来ます。
if( ! empty( $_POST['do_register'] ))$stop_reason = userCheck( $allowed_requests['uname'] , $email4check , $allowed_requests['pass'] , $allowed_requests['vpass'] );
if( ! empty( $_POST['do_register'] ) && empty( $stop_reason_extras ) && empty( $stop_reason ) ) {
いかがでしょうか??
■ここからは趣味の問題かもしれませんが、いちおうご報告。
で、こうすると、なんとなく169行目のエラー表示順をいじりたくなります。
ID やらパスワードのエラーの行に続けて追加項目のエラーを表示したいということです。
'stop_reasons' => array_merge( $stop_reason_extras , $stop_reasons ) ,
'stop_reasons' => array_merge( $stop_reasons , $stop_reason_extras ) ,
で、うかつにこれをしてしまうと、配列にしたエラー文字列が、explode の仕様のため、ひとつ余分に配列を作る(?)ため(末尾の<br />のせい?)、エラーの文字列の間に変な改行が追加されてしまいます(アサインされているstop_reasonsの順番をいじらなければ、フォームとエラー文の間の<br />になるからいいといえばいいんですが)。
で、エラー文字列からあらかじめ末尾の br をとると、うまくいくんですが、何ともかんともニンニンです。
■さらに趣味の問題ですが続けます。
せっかく配列わたしになったらテンプレートもこうしたいなーと思ったり
#たしかにあんまり HTML のタグまでアサインで渡してもらうよりこっちの方がうれしいですね。
<ul>
<{foreach from=$stop_reasons item="reason"}>
<li><strong style='color:#ff0000; font-weight:bold;'><{$reason}></strong></li>
<{/foreach}>
</ul>