-1

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

ありがとう

4

1 に答える 1

0

これが基本的なものです:)

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; ?>
于 2016-04-11T06:11:35.000 に答える