読者です 読者をやめる 読者になる 読者になる

肉とビールとパンケーキ by @sotarok

少し大人になった「肉とご飯と甘いもの」

【修正・補足】ActionFormの定義をYAMLでしてAction生成時に自動的にフォーム定義するプラグイン

Ethna PHP


ActionFormの定義をYAMLでしてAction生成時に自動的にフォーム定義するプラグイン にちょい修正。

ちなみに、実際に使いながら作業中ですが、意外と使い心地がよくていいかんじです。:)


修正点は、インデントの処理をうにゃうにゃしようとして失敗してその定義の最後の要素が削られる的ミスあがったので、そこを。

修正点

<?php
...

    function arrayToString ($array, &$string, $i = 0) {
        $string .= "        ";
        foreach ($array as $key => $val) {
            for ($space = 1; $space < $i; $space++) {
                $string .= "    ";
            }
            
            if (is_array($val)) {
                $string .= "'$key'  =>  array(\n    ";
                $this->arrayToString($val, &$string, $i + 1);
                
                // ココです。後ろの空白削ろうとして失敗した。コメントアウトで処理。
                //if ($i < 1) {
                //    $string = substr($string, 0, mb_strlen($string) - 4);
                //}
                $string .= "),\n";
            } else {
                if (!preg_match('/^[0-9]+$/', $val) && !defined($val) && !is_bool($val)) {
                    $string .= "'$key'  => '$val',\n    ";
                } else {
                    if (is_bool($val)) {
                        if ($val) {
                            $val = "true";
                        } else {
                            $val = "false";
                        }
                    }
                    
                    $string .= "'$key'  =>  $val,\n    ";
                }
            }
            $string .= "        ";
        }
    }


空白と文字列だけでがーっと打ち込んでいけるのがやっぱいいかんじ。
VAR_TYPE_INT とかめんどいもん。intってうちたいもん。

補足

略していいものリスト。大文字でも小文字でもOKです。

凡例

  • Ethna定数
    • こう書いてもいいよ、みたいな。
    • 複数あるかも。


VAR_TYPE_*

  • VAR_TYPE_INT
    • int
  • VAR_TYPE_FLOAT
    • float
  • VAR_TYPE_STRING
    • string
    • str
  • VAR_TYPE_DATETIME
    • datetime
    • date
  • VAR_TYPE_BOOLEAN
    • bool
    • boolean
  • VAR_TYPE_FILE
    • file


FORM_TYPE_*

  • FORM_TYPE_TEXT
    • text
  • FORM_TYPE_PASSWORD
    • password
    • pass
  • FORM_TYPE_TEXTAREA
    • textarea
  • FORM_TYPE_SELECT
    • select
  • FORM_TYPE_RADIO
    • radio
  • FORM_TYPE_CHECKBOX
    • checkbox
  • FORM_TYPE_BUTTON
    • button
  • FORM_TYPE_FILE
    • file
  • FORM_TYPE_HIDDEN
    • hidden

ちなみに、もちろん、FORM_TYPE_TEXT とか書いても大丈夫。