您好,登錄后才能下訂單哦!
在 Yii2 中實現搜索功能,你可以遵循以下步驟:
首先,你需要為你的數據表創建一個搜索模型。這個模型將繼承自 yii\data\ActiveDataProvider
和 yii\base\Model
。例如,如果你要搜索的是 Post
模型,你可以創建一個名為 PostSearch
的模型:
namespace app\models;
use yii\data\ActiveDataProvider;
use yii\base\Model;
class PostSearch extends Model
{
public $title;
public $content;
public $author_id;
public function rules()
{
return [
[['title', 'content', 'author_id'], 'string'],
];
}
public function search($params)
{
$query = Post::find();
$dataProvider = new ActiveDataProvider([
'query' => $query,
]);
$this->load($params);
if (!$this->validate()) {
$query->where('0=1');
return $dataProvider;
}
$query->andFilterWhere([
'id' => $this->id,
'title' => $this->title,
'content' => $this->content,
'author_id' => $this->author_id,
]);
return $dataProvider;
}
}
接下來,你需要創建一個控制器來處理搜索請求。例如,你可以創建一個名為 PostController
的控制器:
namespace app\controllers;
use yii\web\Controller;
use app\models\PostSearch;
class PostController extends Controller
{
public function actionIndex()
{
$searchModel = new PostSearch();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
return $this->render('index', [
'searchModel' => $searchModel,
'dataProvider' => $dataProvider,
]);
}
}
最后,你需要創建一個視圖來顯示搜索表單和搜索結果。例如,你可以創建一個名為 index.php
的視圖文件:
<?php
/* @var $this yii\web\View */
/* @var $searchModel app\models\PostSearch */
/* @var $dataProvider yii\data\ActiveDataProvider */
$this->title = 'Posts';
?>
<h1>Posts</h1>
<?= $this->render('_search', [
'searchModel' => $searchModel,
'dataProvider' => $dataProvider,
]) ?>
同時,你還需要創建一個名為 _search.php
的視圖文件,用于顯示搜索表單:
<?php
/* @var $this yii\web\View */
/* @var $searchModel app\models\PostSearch */
/* @var $dataProvider yii\data\ActiveDataProvider */
$this->title = 'Search';
?>
<h1>Search</h1>
<?= $this->render('_form', [
'searchModel' => $searchModel,
]) ?>
以及一個名為 _form.php
的視圖文件,用于顯示搜索表單:
<?php
/* @var $this yii\web\View */
/* @var $model app\models\PostSearch */
$this->title = 'Search';
?>
<h1>Search</h1>
<?= $this->form->field($model, 'title') ?>
<?= $this->form->field($model, 'content') ?>
<?= $this->form->field($model, 'author_id') ?>
<div class="form-group">
<?= Html::submitButton('Search', ['class' => 'btn btn-primary']) ?>
<?= Html::resetButton('Reset', ['class' => 'btn btn-default']) ?>
</div>
現在,你已經完成了在 Yii2 中實現搜索功能的基本步驟。當用戶訪問 /post/index
時,他們將看到一個搜索表單,可以通過輸入關鍵詞來搜索文章。搜索結果將顯示在頁面上。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。