将Array传递给控制器​​以保存多对多关系

时间:2014-08-27 15:34:08

标签: php jquery ajax laravel-4

我正在尝试允许我的用户在提交的职位发布中添加标签。

为此,我使用bootstrap-tokenfield插件。

用于收集数组和提交的Jquery脚本:

    //create a new array and push the skills on to it. 
    var tokenfield = new Array();
      $(".skills").each(function() {
      tokenfield.push($(this).val());
      });

然后使用ajax将其提交给我的控制器函数以及所有表单详细信息。

控制器:

    //save job
      $job = new Job;
      $job->user_id = $this->userID;
    //other fields...
      $job->save();

//After job is saved iterate over tokenfield array and save to pivot table using Laravel Eloquent properties:

    foreach($_POST['tokenfield'] as $val){
        //only skill name is passed from form.  Find id:
    $skill = Skill::where('name','=', $val)->first();
    if(JobSkill::create(array('job_id' => $job->id, 'skill_id' => $skill->id)))
            { return Response::json(array('success' => 200));}

我收到错误:尝试获取与$ skill-> id相关的非对象的属性,所以我做了一个dd($ _ POST ['tokenfield']);这就是结果:

array(1) { [0]=> string(33) "Window Installation, deck removal"}

我的问题是:我没有正确创建阵列,还是我在控制器中没有正确接受它? TIA

1 个答案:

答案 0 :(得分:0)

简单地说Laravel不接受$ _POST [' tokenfield']

在JAVA上不是很好但是

    var tokenfield = new Array();
  $(".skills").each(function() {
  tokenfield.push($(this).val());
  });

这意味着

    var tokenfield = new Array(
  $(".skills").each(function() {
  tokenfield.push($(this).val());
  }));

纠正我,如果我错了,但对我来说,这看起来像控制器无法找到帖子数据