在yii2

时间:2015-10-10 18:15:10

标签: php yii yii2

HTML代码:

<div class="btn-group" data-toggle="buttons">
   <label class="btn btn-default">
     <span class="glyphicon glyphicon-ok"></span>
     <input type="checkbox" value="Wiring" name="type_of_service_requires" autocomplete="off">Wiring                        
   </label>

   <label class="btn btn-default electric-ppoints">
     <span class="glyphicon glyphicon-ok"></span>
     <input type="checkbox" value="Powerpoints" name="type_of_service_requires" autocomplete="off" checked> Powerpoints
   </label>

             尽快                        接下来的几天                                              住宅                    广告      

以上行显示HTML代码的输出。

控制器代码:

 public function actionGetQuotes()
 {
    $model = new GetQuotesForm();

    if ($model->load(Yii::$app->request-> post()))
    {

          $model= array_key_exists('type_of_service_requires', $_POST)? $_POST['type_of_service_requires']:"";

          $model= array_key_exists('residential_commercial', $_POST)? $_POST['residential_commercial']:"";

          $model= array_key_exists('work_start_when', $_POST)? $_POST['work_start_when']:"";

          if ($model->save(false))
          {
               Yii::$app->getSession()->setFlash('success', 'New Info Was Saved.');
          }
    }
    return $this->render('get-quotes',['model' => $model,]);
}

它显示:   PHP致命错误 - yii \ base \ ErrorException

在非对象上调用成员函数save()

有人可以帮忙解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

这个问题正在发生在下面的线 -

      $model->type_of_service_requires = $_POST['type_of_service_requires'];

      $model->residential_commercial = $_POST['residential_commercial'];

      $model->work_start_when = $_POST['work_start_when'];

评论所有3行并尝试再次提交表单。它应该没有错误。

如果您想保存提交的值超过3行,请以下面的格式修改它们 -

 if(isset( $_POST['type_of_service_requires'] ))
    $model->type_of_service_requires = $_POST['type_of_service_requires'];

 if(isset( $_POST['residential_commercial'] ))
    $model->residential_commercial = $_POST['residential_commercial'];

 if(isset( $_POST['work_start_when'] ))
    $model->work_start_when = $_POST['work_start_when'];

现在,模型 - &gt;保存(false)将在表单提交后起作用。但是如果表单提交包含三个属性中任何一个的任何空值,那么它将显示错误。

要解决此问题,您可以使用以下方式处理所有三个属性 -

public static void main(String[] args) {
    String input = "3\n" +
            "1 2 3\n" +
            "3 4 5\n" +
            "6 9 3\n";
    Scanner scanner = new Scanner(input);

    int rows = scanner.nextInt();
    scanner.nextLine();

    int[][] arr = new int[rows][];

    for (int i = 0; i < rows; ++i) {
        String line = scanner.nextLine();
        arr[i] = lineToIntArray(line);
    }
}

private int[] lineToIntArray(String line) {
    String[] cols = line.split(" ");
    int[] ints = new int[cols.length];
    for (int i = 0; i < cols.length; ++i) {
        ints[i] = Integer.parseInt(cols[i]);
    }
    return ints;
}

如果解决方案不起作用,请添加评论。在评论中添加错误详细信息。