在null Yii2上调用成员函数load()

时间:2017-10-31 08:39:56

标签: javascript php yii2

我是Yii2框架的新手。我正在尝试保存表单,但我无法执行此操作。表格看起来像

enter image description here

javascript低于

 $(document).ready(function () {

     var surveyReferences = new Bloodhound({
              datumTokenizer: Bloodhound.tokenizers.obj.whitespace('meter_msn'),
              queryTokenizer: Bloodhound.tokenizers.whitespace,
              prefetch: 'survey',
              remote: {
                url: '$url2?q=%QUERY',
                wildcard: '%QUERY'
              }
        });

      $('#the-mter-id').typeahead(null, {
            limit: 50,
            name: 'ref-numbers',
            display: 'meter_msn',
            source: surveyReferences,
            suggestion: function(data) {
                    return '<p><strong>' + data.id + '</strong> – ' + data.meter_msn + '</p>';
        }
    }
    );

      jQuery('#the-mter-id').on('typeahead:selected',function(e,datum) {

          var html = '<div class="selcted-meters"><input type="hidden" name="selected_meters[]" value="'+datum.id+'" />'+datum.meter_msn+'<a onclick="$(this).closest(\'.selcted-meters\').remove()">X</a></div>';
           $('#selected_mters_container').append(html);

           $('#routemeters-mter_id').val(datum.meter_msn);
           $('#routemeters-user_id').val(datum.issued_user);
           $('#the-mter-id').typeahead('val','');
      });


});

以下是actionCreate

中的controller功能
$model = new RouteMeters();

    if (isset($_REQUEST['selected_meters']))
    {
        $m = RouteMeters::findOne($_REQUEST['selected_meters']);

        foreach($_REQUEST['selected_meters'] as $k=>$v)
        {
           $m = RouteMeters::findOne($v);
           $m ->load(Yii::$app->request->post());

           if ($m->save())
           {

               return $this->redirect(['view','id'=>$model->id]);
           }
           else
           {
               return $this->render('create',[
                   'model' => $model,
               ]);
           }


        }
    }else
    {
        return $this->render('create',[
            'model' => $model,
        ]);
    }

现在当我点击创建按钮时,我收到了以下错误

  

在null

上调用成员函数load()

指向

  

$ m - &gt; load(Yii :: $ app-&gt; request-&gt; post());

我也搜索了解决方案但无法找到它。 此外,我在$m之后通过var_dump($m);检查了lod()的回复,并且我得到了输出。

我坚持不知道该怎么做

任何帮助都将受到高度赞赏

1 个答案:

答案 0 :(得分:0)

$m = RouteMeters::findOne($v);没有找到任何东西,所以最好在加载之前检查null if (isset($m)){$m->load(...)