Codeigniter:在循环中解析视图中的数组数据

时间:2016-06-12 12:21:39

标签: php arrays codeigniter multidimensional-array

我想在我的视图中使用多维数组,然后使用此数组构建表单

这就是我控制器中的内容

function signin(){
    $attributes = array(
        'name'  =>  
        array(
            'name'        =>    'name',
            'type'        =>    'text',
            'placeholder'     =>     '' ,
            'value'       =>    'value'
            ),
        'password'                =>    
            array(
            'name'        =>    'name',
            'type'        =>    'password',
            'placeholder' =>      '',

            ),
        'gender' => 
            array(
            'name'        =>    'name',
            'type'        =>    'select',
                        'value'=>       
                            array(
                 'male','female'
            ),
        ),

        'usertpye'=>array(
            'type'                =>      'radio',
            'seller'          =>    'seller',
            'buyer'       =>    'buyer'
        ),
        'upload'=>array(
            'type'            =>      'file',
            'name'        =>    'file'
        ),

        'submit'=>array(
            'type'        =>    'submit',
            'name'        =>    'submit',
            'value'       =>    'submit'

        )

    );
        $this->load->view('login',$attributes);

}

在我看来登录我可以访问这些项目,例如 $ name $ password ,但我想要在循环中获取。真的有不知道我怎么能这样做,请帮助。

1 个答案:

答案 0 :(得分:2)

load函数接收一个数组,然后该键在视图中作为变量进行解析。因此,你得到$ name,$ password等变量。 只需在调用加载函数之前添加另一个图层,如:

$data['attributes'] = $attributes;

然后,在加载视图时执行

$this->load->view('login',$data); 

这是有点调整的数组:

$attributes = array(
    'name'  =>  
    array(
        'name'        =>    'name',
        'type'        =>    'text',
        'placeholder' =>     '' ,
        'value'       =>    'value'
        ),
    'password'                =>    
        array(
        'name'        =>    'name',
        'type'        =>    'password',
        'placeholder' =>    '',

        ),
    'gender' => 
        array(
        'name'    =>    'name',
        'type'    =>    'select',
        'options' =>     array(
             'male'   => 'Male',
             'female' => 'Female'
        ),
    ),

    'usertpye'=>array(
        'type'   =>     'radio',
        'values' => array(
            'seller' =>    'seller',
            'buyer'  =>    'buyer'
        )
    ),
    'upload'=>array(
        'type' =>      'file',
        'name' =>    'file'
    ),

    'submit'=>array(
        'type'        =>    'submit',
        'name'        =>    'submit',
        'value'       =>    'submit'

    )
);

以下是使用CI的表单帮助程序的样子(这将在视图中,记得先在控制器中加载帮助程序):

echo form_open('email/send');
foreach($attributes as $key=>$attribute) {
    echo form_label($key).'<br/>';
    if($attribute['type'] == 'select') {
        echo form_dropdown($attribute['name'],$attribute['options']).'<br/>';
    } elseif($attribute['type'] == 'radio') {
        foreach ($attribute['values'] as $value) {
            echo form_label($value);
            echo form_radio(array('name' => $key, 'value' => $value)).'<br/>';
        }
    } else {
        echo form_input($attribute).'<br/>';
    }
}

注意我对初始属性数组进行了一些调整以使其工作,但您仍需要改进其结构,为所有项目添加唯一名称等。