2017-10-05 130 views
0

我使用laravel背包,我有点卡住现在:插入选中复选框

- >我想从表中加载的基础上,一些复选框之前的下拉结果。

喜欢说我有一个名为exercise_type的字段,它是一个下拉列表,下拉列表中的所有选项都存储在一个表格中,每个exercise_type有10个与其相关的练习。

see image of table

这里value表是exercise_type

并且每个value有10倍以上的值。

这里是我如何在Crudcontroller中添加这个exercise_type字段。

$this->crud->addField([ // select_from_array 
     'name' => 'exercise1_type', 
     'label' => "Exercise 1", 
     'type' => 'select2', 
     'entity' => 'Exercise_group', 
     'attribute' => 'value', 
     'model' => 'App\Models\Exercise_group', 
     //'allows_null' => false, 
     'attributes' => [ 
     'id' => 'exercise', 
     'OnChange' => 'getexercise()', 
     ] 

     // 'allows_multiple' => true, // OPTIONAL; needs you to cast this to array in your model; 
    ], 'update/create/both'); 

我能够从表中加载值直到这里。

然后我overrided创建视图的视图,并将此带来的复选框在阿贾克斯成功的功能。

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script> 
<script type="text/javascript"> 

function getexercise(){ 
    var exercise = $('#exercise').val(); 
    alert(exercise); 
    $.ajax({ 
    url : "../../getexercise", 
    type : "POST", 
    data : { id : exercise }, 
    success: function(response){ 

     // what to put here to bring checkboxes with the name of exercises 
      as in table 
    } 
    }); 
}; 

这里是我的路线:

Route::post('/getexercise','[email protected]'); 

这里是我的BlahController.php

public function getexercise(Request $request){ 
    $id = $_POST['id']; 

    $exercises = Exercise_group::where('id', $id)->first(); 
    $exercise_id = $exercises->id; 
    $exercise_1 = $exercises->exercise1; 
    $exercise_2 = $exercises->exercise2; 
    $exercise_3 = $exercises->exercise3; 
    $exercise_4 = $exercises->exercise4; 
    $exercise_5 = $exercises->exercise5; 
    $exercise_6 = $exercises->exercise6; 
    $exercise_7 = $exercises->exercise7; 
    $exercise_8 = $exercises->exercise8; 
    $exercise_9 = $exercises->exercise9; 
    $exercise_10 = $exercises->exercise10; 


    return response()->json([ 
    'exercise_id' => $exercise_id, 
    'exercise1' => $exercise_1, 
    'exercise2' => $exercise_2, 
    'exercise3' => $exercise_3, 
    'exercise4' => $exercise_4, 
    'exercise5' => $exercise_5, 
    'exercise6' => $exercise_6, 
    'exercise7' => $exercise_7, 
    'exercise8' => $exercise_8, 
    'exercise9' => $exercise_9, 
    'exercise10' => $exercise_10, 
    //'state' => 'CA' 

]); 
} 

我不能够在阿贾克斯成功的一切功能添加复选框工作得很好。我尝试了这些链接,但他们没有工作这样:

link1

link2

编辑::

现在复选框都这样工作:

$.each(response, function (key, value) { 

       var li = $('<li><input type="checkbox" name="' + key + '" id="' + key + '"/>' + 
          '<label for="' + key + '"></label></li>'); 
       li.find('label').text(value); 

       $('#wkslist').append(li); 
       console.log(value); 
       $('#exercise_detail').val(value); 
      }); 

但他们没有以一种很好的方式显示,所以如果我想添加这些复选框值在背包laravel另一个下拉作为我试图例子,但不工作:

$('#exercise_detail').val(value); 

$this->crud->addField([ // Select2Multiple = n-n relationship (with pivot table) 
     'name' => "exercise1_type_detail", 
     'label' => "Exercise 1 : Detail", 
     'type' => 'select2_multiple', 
     'attributes' => [ 
     'id' => 'exercise_detail', 
     //'OnChange' => 'getexercisedetail()', 
     ], 

    ], 'update/create/both'); 
+1

我真的不明白你想说什么..你能更简单地理解或详细说明你的问题,请详细一点。 –

+0

@FaisalMehmoodAwan在背包laravel我已经重写了创建视图,并添加了ajax调用成功的地方,我想根据所选择的练习类型调用复选框查看表格和链接。我不能添加复选框 –

回答

0

在你的Ajax请求,添加属性数据类型:“JSON”

假设,你的JSON看起来像下面,

[{'exercise_id' : 'Barbel', 
'exercise1' : 'Flat', 
'exercise2' : 'Incline', 
'exercise3' : NULL, 
'exercise4' : 'Flat', 
'exercise5' : NULL, 
'exercise6' : 'Flat', 
'exercise7' : 'Barbel', 
'exercise8' : 'Flat', 
'exercise9' : 'Barbel', 
'exercise10' : 'Flat'}] 

和里面的成功,添加下面的代码行。

if(response){ 
    var data = response[0]; 
    for(var i = 1; i< 10; i++){ 
     if(data['exercise'+i]){ 
     str = '<input type="checkbox" class="exercise+'i'" /> data['exercise'+i] '; 
     $("#container").append(str); 
     } 
    } 
} 

上面的示例,将为您工作。请在您的$ .ajax请求中添加dataType:'json'

+0

其实我想出了一个方法来使复选框,它正在工作,但如果我想添加每个选项来背包laravel另一个下拉我使用'$('#exercise_detail')。val(value) ;'这样做,但它不工作。检查我的编辑 –