Yii2: Как отправить переменную из контроллера в modelSearch?

#php #model #controller #yii2

#php #Модель #контроллер #yii2

Вопрос:

У меня есть контроллер, и мне нужно отправить переменную в мою модель 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,
    ]);
}
 

Ответ №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
    .....
}
 

Комментарии:

1. Если date это общедоступное свойство или атрибут модели, вы также можете это сделать $searchModel = new CarsSearch(['date' => $date]); .

2. Да, я согласен 🙂