Мне нужно создать поисковую форму во внешнем интерфейсе, чтобы получать данные от пользователей и искать их в базе данных, а затем отображать данные в зависимости от этого ключевого слова.
Мне нужно использовать активную форму yii2, а не форму HTML.
Если какой-либо пример кода для поисковой формы, действия в контроллере сайта и в представлении, был бы рад.
Спасибо
Вот основной 🙂
SiteController.php (файл контроллера):
use yii\data\ActiveDataProvider;
use Yii;
class SiteController extends yii\web\Controller
{
public function actionSearch() {
$searchString = Yii::$app->request->get('query');
$searchQuery = Product::find()->where(['name' => $searchString])->orderBy(['ts' => SORT_DESC]);
$productDataProvider = new ActiveDataProvider(['query' => $searchQuery]);
return $this->render('search', compact('productDataProvider'));
}
search.php (просмотреть файл):
<?php
use yii\helpers\Url;
use yii\grid\GridView;
$form = \yii\widgets\ActiveForm::begin([
'options' => ['role' => 'form', 'method' => 'GET', 'action' => Url::to(['site/search'])]
]); ?>
<?=$form->field($model, 'query')?>
<?=\yii\helpers\Html::submitButton('Поиск')?>
<?php $form->end()?>
<? if ($productDataProvider->totalCount): ?>
<?= GridView::widget([
'dataProvider' => $productDataProvider,
'columns' => [
'id',
'name'
],
]) ?>
<? else: ?>
<p>Ничего не найдено</p>
<? endif; ?>
Других решений пока нет …