ユーザーからの入力を取得してデータベースで検索し、そのキーワードに応じてデータを表示するには、フロントエンドで検索フォームを作成する必要があります。HTML フォームではなく、yii2 アクティブ フォームを使用する必要があります。検索フォーム、サイトコントローラーのアクション、ビューのコード例があれば、それは素晴らしいことです。
ありがとう
ユーザーからの入力を取得してデータベースで検索し、そのキーワードに応じてデータを表示するには、フロントエンドで検索フォームを作成する必要があります。HTML フォームではなく、yii2 アクティブ フォームを使用する必要があります。検索フォーム、サイトコントローラーのアクション、ビューのコード例があれば、それは素晴らしいことです。
ありがとう
これが基本的なものです:)
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; ?>