Öncelikle frontend/views/layout/main.php
sayfasında form oluşturalım. Arama yapacağımız input bu sayfada olacak.
<form action="<?=Yii::$app->request->getHostInfo()?>">
<input type="text" name="ara" autocomplete="off" placeholder="Sayfa, kişi veya kelime ara..." value="<?=!empty(Yii::$app->request->get('ara'))?Yii::$app->request->get('ara'):''?>">
</form>
form içinden SiteController.php
sayfasına istek gönderiyoruz.
public function actionIndex()
{
$search = Yii::$app->request->get('ara');
if($search){
$posts = \backend\models\Posts::find()
->where('postTitle LIKE :query OR postContent LIKE :query OR postKeywords LIKE :query')
->addParams([':query'=>'%'.$search.'%'])
->all();
return $this->render('aramasonuc',[
'posts'=>$posts,
]);
}else{
$posts=\backend\models\Posts::find()->all();
return $this->render('index,[
'posts'=>$posts,
]);
}
}
Son olarak view/aramasonuc.php
adında bir sayfa oluşturup aşağıdaki kodları kullanarak arama sonuçlarını listeleyebilirsiniz.
<ul class="search-list">
<?php if(count($posts)>0):?>
<?php foreach($posts as $p=>$post):?>
<li>
<a href="<?=Yii::$app->UrlManager->createUrl(['site/postdetails','postTitleSeo'=>$post->postTitleSeo])?>">
Detay...
</a>
</li>
<?php endforeach;?>
<?php else:?>
<li>
<div class="alert alert-primary alert-dismissible" role="alert">
Aradığınız kriterlerde <strong>kayıt</strong> bulunamadı...
</div>
</li>
<?php endif;?>
</ul>