2016-04-26 54 views
0

我正在使用x-editable作为我的编辑到位库。PHP显示错误的名称值

我的问题是,当我去插入我的数据并通过我的控制器运行它时,显示错误的值,当我var_dump的PHP。

我插入的行

<input class="form-control updateField" data-url="{{ route('socialDataSubmit', 1)}}" data-title="Facebook" name="facebook" placeholder="Facebook" type="input" value="{{ old('facebook', @$siteSocialSettingsData->facebook)}}"> <span class="input-group-btn"><button class="btn btn-default edit" type="button"><span class="glyphicon glyphicon glyphicon-pencil"></span></button></span>

正如你在我的jQuery看到我有console.log这显示出应插入到数据库中正确的值。但是,当我到达PHP时,我从另一个选项卡(使用引导选项卡)输入字段获得"name"为什么?

输入名称,多数民众赞成在插入:

<input class="form-control updateField" data-url="{{ route('generalDataSubmit', 1)}}" data-title="Website Name" name="siteName" placeholder="Email" type="input" value="{{ old('siteName', $siteSettingsData->siteName)}}"> <span class="input-group-btn"><button class="btn btn-default edit" type="button"><span class="glyphicon glyphicon glyphicon-pencil"></span></button></span> 

控制器:

public function generalSettingsGeneralSubmit(Request $request, $id) 
    { 
     $dbUpdate    = generalSettings::find($id); 
     $dbColumnName   = Request::input('name'); 
     $dbColumnValue   = Request::input('value'); 

     $dbUpdate->$dbColumnName = $dbColumnValue; 
     $dbUpdate->save(); 

    } 

    public function generalSettingsSocialSubmit(Request $request, $id) 
    { 

     $social = socialSettings::where('id','=',$id)->first(); 

     if(is_null($social)) 
     { 
      $socialInsert = new socialSettings; 

      $socialInsert->socialName = Request::input('name'); 
      $socialInsert->socialLink = Request::input('value'); 
      $socialInsert->save(); 
     }else{ 
      var_dump(Request::input('name')); 
      var_dump(Request::input('value')); 
      die(); 
     } 
    } 

的jQuery:

$(function(){ 


$.fn.editable.defaults.mode = 'inline'; 

$.fn.editable.defaults.params = function (params) { 
    params._token = $("#_token").data("token"); 
    return params; 
}; 
    var dataURL = $('.updateField').data('url'); 
    var inputName = $('.updateField').attr("name"); 

$('.updateField').editable({ 
    type: 'text', 
    url: dataURL,  
    name: inputName,  
    placement: 'top', 
    title: 'Enter public name', 
    toggle:'manual', 
    send:'always', 
    ajaxOptions:{ 
     dataType: 'json' 
    }  
}); 

$('.edit').click(function(e){ 
    var container = $(this).closest('.input-group'); // !! 
    var input  = container.find('.updateField'); 
    var inputName = input.attr('name'); 
    var dataURL = input.data('url'); 

     console.log(inputName); 
     e.stopPropagation(); 
     container.find('.updateField').editable('toggle'); // !! 
     container.find('.edit').hide(); // !! 
}); 
    $(document).on('click', '.editable-cancel, .editable-submit', function(e){ 
     $(e.target).closest('.input-group').find('.edit').show(); // !! 
    })    
//ajax emulation. Type "err" to see error message 
$.mockjax({ 
    url: '/post', 
    responseTime: 100, 
    response: function(settings) { 
     if(settings.data.value == 'err') { 
      this.status = 500; 
      this.responseText = 'Validation error!'; 
     } else { 
      this.responseText = ''; 
     } 
    } 
}); 

}); 

回答

0

@Jess,我查看可导致此问题的问题:

中的console.log内容是基于:

var container = $(this).closest('.input-group'); // !! 
var input  = container.find('.updateField'); 
var inputName = input.attr('name'); 

代码获取“本”的内容,其次是.closest()函数至极GET第一个符合你的条件的元素;

但是,您所发送到PHP变量:

var dataURL = $('.updateField').data('url'); 
var inputName = $('.updateField').attr("name"); 

这是越来越从“.updatedField”的内容,并开始从文件的beggining获得。

我的猜测是,试着把一个唯一的ID给这个输入,并检查它是否工作。如:

<input id="test-id-sample" class="form-control updateField" 
... 
var inputName = $('#test-id-sample .updateField').attr("name"); 
+0

谢谢,我将如何使用var作为ID,因为我会设置一个数据ID。类 –