【问题标题】:How can i save multiple checkbox value those are checked in cakephp hasMany relation?如何保存在 cakephp hasMany 关系中选中的多个复选框值?
【发布时间】:2013-02-24 20:26:45
【问题描述】:

假设我有 3 个表 property_detailsproperty_feature_detailsproperty_feature_relations

PropertyDetail 模型与 PropertyFeatureRelation 具有 hasMany 关系。

当时保存我的数据数组是这样的:

$this->data = array('PropertyDetail' => array('name'=>'xyz'),'PropertyFeatureRelation' => array('0' => array('feature_id'=>1),'1' => array('feature_id'=>5),'2' => array('feature_id'=>0),'3' => array('feature_id'=>0)));

那些 feature_ids 值来自复选框。那些已检查它们包含 ids 值,未检查的值为 0。但是在子表中保存了所有的零和非零数据。

实际上我想保存那些仅被选中的复选框值。请不要提供任何手动控制器逻辑。帮帮我。

【问题讨论】:

    标签: cakephp-2.0


    【解决方案1】:

    我用我的例子来解释你,它有问题、答案和调查

    您可以使用多个复选框语法如下:

                                                 $answers=array();
                                        $tmp_ans=$question['Answer'];
                                        for($j=0;$j < count($tmp_ans);$j++)
                                        $answers[$tmp_ans[$j]['id']]=$tmp_ans[$j]['answer'];            
                                        echo '<li>';
                                            echo $this->Form->input('Answer', array(
                                            'type' => 'select',
                                            'name'=>'Answer['.$question['Question']['id'].']',
                                            'class'=>'test',
                                            'label'=>false,
                                            'multiple' => 'checkbox',
                                            'options' =>$answers ,
                                            ));
    
                                        echo '</li>';
    

    之后,您将只有那些您检查过的答案,其他人不会出现在帖子数组中,因此您可以使用以下语法来保存数据

    if(!empty($this->data['Answer'])){
    
                    foreach ($this->data['Answer'] as $key=>$val):
    
                        if(!empty($val)):
                                if(is_array($val)):
    
                                    foreach ($val as $ans):
                                        $post_data['UserAnswer']['id']='';
                                        $post_data['UserAnswer']['survey_id']=$id;
                                        $post_data['UserAnswer']['user_id']=$this->Auth->user('id');
                                        $post_data['UserAnswer']['question_id']=$key;
                                        $post_data['UserAnswer']['answer_id']=$ans;
                                        $this->UserAnswer->save($post_data['UserAnswer']);
                                    endforeach;
                                else:
                                        $post_data['UserAnswer']['id']='';
                                        $post_data['UserAnswer']['survey_id']=$id;
                                        $post_data['UserAnswer']['user_id']=$this->Auth->user('id');
                                        $post_data['UserAnswer']['question_id']=$key;
                                        $post_data['UserAnswer']['answer_id']=$val;
                                        $this->UserAnswer->save($post_data['UserAnswer']);
    
                                endif;
    
                        endif;
                    endforeach;
    
                }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-25
      • 2012-08-23
      • 2023-03-25
      相关资源
      最近更新 更多