阵列来生成表单 [英] array to generate form

查看:105
本文介绍了阵列来生成表单的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想使用一个数组来输出用下面的函数形式:

I am trying to use an array to output a form with the following function:

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);

但是它只输出:

当它应该是这个样子:

只有每一个,例如输入,则返回。而不是它的所有实例。因此,输入=&gt;中创造,输入=&gt;中LAST_MODIFIED,输入=&gt;中发表了应使三个输入,但它只返回。

Only one of each, for example input, is returned. Rather than all instances of it. So "input"=>"created", "input"=>"last_modified", "input"=>"published" should make three inputs, but it only returns one.

推荐答案

您正在重新使用数组键。因此,

You're re-using array keys. So

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

最终会看起来像这样:

will end up looking like this:

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

相反,修改code到这样的事情:

Instead, modify your code to something like this:

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

然后把这些单独的阵列,并遍历它们。

Then take those individual arrays, and iterate through them.

foreach ($array['input'] as $fieldname) { // etc and so on

这篇关于阵列来生成表单的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆