Yii2 ActiveForm Model doesn’t exist

I’m a newbie, so please excuse the stupid question:
I have a controller in Yii2 app with the following actions:

private function actionPagination($query)
    {
        $count = $query->count();

        $pagination = new Pagination([
            'defaultPageSize' => 10,
            'totalCount' => $count,
        ]);

        $books = $query
            ->orderBy('id')
            ->offset($pagination->offset)
            ->limit($pagination->limit)
            ->all();

        return [$books, $pagination];
    }


    public function actionIndex()
    {
        $query = Books::find();

        list($books, $pagination) = $this->actionPagination($query);

        return $this->render('index', [
            'books' => $books,
            'pagination' => $pagination,
            'totalPages' => max(1, ceil($pagination->totalCount / $pagination->pageSize)),
        ]);
    }


    public function actionFilter()
    {

        $query = Books::find();
        $genres = Genres::find()->select(['genre_name', 'id'])->orderBy('genre_name')->indexBy('id')->column();
        $authors = Authors::find()->select(['concat(first_name, " ", last_name)', 'id'])->orderBy('id')->column();
        $authors = array_combine(range(1, count($authors)), $authors);

        $searchModel = new Books();
        $requestParams = Yii::$app->request->queryParams;

        if ($searchModel->load($requestParams)) {
            if ($searchModel->year_filter) {
                $query->andWhere(['year' => $searchModel->year_filter]);
            }
            if ($searchModel->genre_filter) {
                $query->andWhere(['genre_id' => $searchModel->genre_filter]);
            }

            if ($searchModel->author_filter) {
                $query->joinWith('links')
                    ->andWhere(['links.author_id' => $searchModel->author_filter]);
            }
        }

        return $this->render('index', [
            'authors' => $authors,
            'genres' => $genres,
            'searchModel' => $searchModel,
        ]);
    }

and i have a form:

  <?php $form = ActiveForm::begin([
    'action' => ['filter'],
    'method' => 'get',
    'options' => ['id' => 'filter-form']
  ]); 
  ?>

  <?= $form->field($searchModel, 'year_filter')->textInput(['id' => 'year-filter-input']) ?>

  <?= $form->field($searchModel, 'genre_filter')->dropDownList(
    $genres,
    [
      'prompt' => 'All genres',
      'id' => 'genre-filter-select'
    ]
  ) ?>

<?= $form->field($searchModel, 'author_filter')->dropDownList(
    $authors,
    [
        'prompt' => 'All authors',
        'id' => 'author-filter-select'
    ]

) ?>

  <div class="form-group">
    <?= Html::submitButton('Filtering', ['class' => 'btn btn-primary']) ?>
    <?= Html::button('Reset filter', [
      'class' => 'btn btn-outline-secondary reset-filter',
      'type' => 'button'
    ]) ?>
  </div>

  <?php ActiveForm::end(); ?>

So when i try to load the page im getting the following error:
Undefined variable $searchModel
I want to create $searchModel only after im pressing ‘Filtering’.(
Or should i use another method?

i tried the code that i listed.