#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. Да, я согласен 🙂