0

次の関数でフォームを出力するために配列を使用しようとしています:

public function createArrayForm($table, $do, $formDesc = '', $id, $array, $markFields = false) {
    if (!isset($table) && !isset($do)) {
        self::show_error('One or more parameters are missing in ' . __FUNCTION__);
    } elseif ($table == 'update' && !isset($id)) {
        self::show_error('For this form to be built, and ID must be set. Missing parameter `ID` in ' . __FUNCTION__);
    }
    if (is_array($array) && $do == 'insert') {
        $out .= '<form action="' . $_SERVER['PHP_SELF'] . '?id=' . $id . '&table=' . $table . '" method="post" class="form-horizontal" ' . $formAppend . '>';
        $out .= '<div class="form-desc">' . $formDesc . '</div>';
        $out .= $markFields ? '<h3>Input Fields</h3>' : '';
        foreach ($array as $type => $fieldname) {
            if ($type == 'input') {
                $out .= generateInputField($fieldname);
            }
        }
        $out .= $markFields ? '<h3>Content Fields</h3>' : '';
        foreach ($array as $type => $fieldname) {
            if ($type == 'textarea') {
                $out .= generateTextarea($fieldname, $cke);
            }
        }
        $out .= $markFields ? '<h3>Images Fields</h3>' : '';
        foreach ($array as $type => $fieldname) {
            if ($type == 'image') {
                $out .= generateImgField($fieldname);
            }
        }
        $out .= form_hidden('user_data', '1');
        $out .= form_hidden('id', self::generateID());
        $out .= form_close();
        return $out;
    }

そして呼び出します:

$arr = array("textarea"=>"project_name", "input"=>"created", "input"=>"last_modified", "input"=>"published");
echo $automate->createArrayForm('projects', 'insert', 'Some form desc', '123', $arr, true);

しかし、それは出力するだけです:

ここに画像の説明を入力

次のようになります。

ここに画像の説明を入力

入力など、それぞれ 1 つだけが返されます。それのすべてのインスタンスではなく。したがって"input"=>"created", "input"=>"last_modified", "input"=>"published"、3 つの入力を作成する必要がありますが、1 つしか返されません。

4

3 に答える 3

1

配列キーを再利用しています。そう

$arr = array("textarea"=>"project_name", "input"=>"created", "input"=>"last_modified", "input"=>"published");

最終的には次のようになります。

$arr = array("textarea"=>"project_name", "input"=>"published");

代わりに、コードを次のように変更します。

$arr = array("textarea"=>array("project_name"), "input"=>array("created", "last_modified", "published"));

次に、それらの個々の配列を取得して、それらを反復処理します。

foreach ($array['input'] as $fieldname) { // etc and so on
于 2013-08-06T16:02:28.120 に答える