Я создал 3 содержания курса. Но, к сожалению, он показывает только 1 содержание курса, как показано на картинке ниже. Что я пытаюсь сделать, так это показать ВЕСЬ контент курса, который я создал ранее. Он работает нормально, когда я запускаю с этим синтаксисом.
public function actionView($id)
{
$dataProvider = new ActiveDataProvider([
'query' => Coursecontent::findAll()->andFilterWhere(['coursecontent_id' => $id]),
]);
return $this->render('view', [
'model' => $this->findModel($id), 'dataProvider' => $dataProvider,
]);
}
Но когда я изменил свой код на this. Он показывает это сообщение об ошибке. Здесь я пытаюсь показать все содержание курса. Слишком мало аргументов для функции yii\db\BaseActiveRecord::findAll(), 0 передано в D:\XAMPP\htdocs\valuefarm\algobox_admin\controllers\CourseController.php в строке 57 и ровно 1 ожидается
public function actionView($id)
{
$dataProvider = new ActiveDataProvider([
'query' => Coursecontent::findAll()->andFilterWhere(['coursecontent_id' => $id]),
]);
return $this->render('view', [
'model' => $this->findModel($id), 'dataProvider' => $dataProvider,
]);
}
🤔 А знаете ли вы, что...
PHP позволяет создавать и отправлять электронные письма с использованием функции mail().
Вам не нужно получать данные для ActiveDataProvider
, он сделает это за вас.
Просто укажите запрос.
public function actionView($id)
{
$dataProvider = new ActiveDataProvider([
'query' => Coursecontent::find()->andFilterWhere(['coursecontent_id' => $id]),
]);
return $this->render('view', [
'model' => $this->findModel($id), 'dataProvider' => $dataProvider,
]);
}
Ваша ошибка заключается в том, что findAll()
ожидает условие и возвращает результаты, а не экземпляр ActiveQuery
.
например
Coursecontent::findAll(['coursecontent_id' => $id]);