【问题标题】:Yii2: How to send a variable from controller to modelSearch?Yii2:如何将变量从控制器发送到模型搜索?
【发布时间】:2020-11-19 14:18:54
【问题描述】:

我有一个控制器,我需要向我的 CarsSearch 模型发送一个变量,但我收到了这个错误:

Invalid argument supplied for foreach()

搜索将使用$date 获得在特定日期售出的汽车。如何发送$date 变量?

这是我的控制器:

public function actionCars()
{
    $date = '2020-06-01';
    $searchModel = new CarsSearch($date); // Poblem here in $date.
    $dataProvider = $searchModel->search(Yii::$app->request->queryParams);

    return $this->render('cars', [
        'searchModel' => $searchModel,
        'dataProvider' => $dataProvider,
        'date' => $date,
    ]);
}

【问题讨论】:

    标签: php model controller yii2


    【解决方案1】:

    你可以把它设置成这样的一些属性

    $date = '2020-06-01';
    $searchModel = new CarsSearch();
    $searchModel->date = $date;
    $dataProvider = $searchModel->search(Yii::$app->request->queryParams);
    

    并且在您的模型中CarsSearch 必须具有名称为date 的属性,您可以使用$this->date 调用它

    或仅将此参数发送给搜索功能:

    $date = '2020-06-01';
    $searchModel = new CarsSearch();
    $dataProvider = $searchModel->search(Yii::$app->request->queryParams, $date);
    

    那么你的函数search一定是

    public function search($params, $date){
        //here use $date
        .....
    }
    

    【讨论】:

    • 如果date 是公共属性或模型的属性,您也可以使用$searchModel = new CarsSearch(['date' => $date]);
    • 是的,我同意 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-17
    • 1970-01-01
    • 2021-11-21
    相关资源
    最近更新 更多