【问题标题】:How create a yii2 multiple fields? [closed]yii2如何创建多个字段? [关闭]
【发布时间】:2015-01-24 01:45:56
【问题描述】:

yii2有问题 我如何处理多个字段? 我的观点一定是这个链接 http://bootsnipp.com/snippets/featured/multiple-fields 有人可以举个例子吗

【问题讨论】:

    标签: javascript php jquery field yii2


    【解决方案1】:

    我认为你应该使用 javascript 创建字段和 php 表单(不使用 yii)。

    例子:

    HTML:

    <div class="input">
        <div id="container"></div>
        <span class='add-input' href="#" name="name" onclick='addFields()'>Add</span>
    </div>
    

    JS函数:

    function addFields(){
        var container_parent = document.getElementById('container');
    
        var div = document.createElement("div");
        div.name = "div_element";
        container_parent.appendChild(div);
    
        var new_field = document.createElement("input");
        new_field.name = 'new_name[]';
        div.appendChild(new_field);
    }
    

    这里我设置 name 'new_name[]' 为接收 post 数据时,我们使用 foreach ($_POST['new_name'] as value) 来获取所有数据。

    如果创建选择元素:

    function addFields(){
        var container_parent = document.getElementById('container');
    
        var div = document.createElement("div");
        div.name = "div_element";
        container_parent.appendChild(div);
    
        var new_field = document.createElement("select");
        new_field.name = 'new_name[]';
        div.appendChild(new_field);
        new_field.innerHTML = '<?php echo $option_items; ?>';
    }
    

    这里我添加了 yii 表单创建的 options 值:

    $option_items =  $form->dropDownList($model, 'name', $allItems, array('prompt'=>'')); //get dropdownlist by yii
    //remove data, just hold option value
    $pos = strpos($option_items, "<option");
    $rpos = strrpos($option_items, "</option>");
    $option_items = substr($option_items, 0, $rpos+9);
    $option_items = substr($option_items, $pos, strlen($option_items) - $pos);
    $option_items = str_replace("\n", "", $option_items);
    

    或者您可以在以下位置添加您的选项值:

    new_field.innerHTML = '<?php echo $option_items; ?>';
    

    你可以修改成更酷的,祝你好运,如果我的英语不好,请见谅:)

    【讨论】:

    • 所以,我获取值的算法抛出 javascript 然后将其传递给模型(我可以在模型值中验证&),然后将其发布到数据库吗?
    • 例如你的模型是书,你的属性是类别,在控制器中,得到 $model = new Book; $model->category = $_POST... 使用 $model->vallidate 来验证属性!
    • 以及如何将乘法值插入数据库?
    • 只需为您的模型设置属性并保存:$model->category = $_POST[...]; $model->id=...; $模型->保存(); (“类别”存在于数据库中)。如果您有多个值,只需循环: foreach ($_POST['new_name'] as $value) {$model->id = ...;...; $模型->类别= $值; ...$model->save() }
    • 在yii2中我使用activeform,在你的例子中我不需要使用它?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多