Yii2有一个searchModel搜索的每个字段GridView.是否可以GridView在用户可以输入关键字的位置之外创建单个搜索字段,并且在按下搜索按钮时,结果将GridView根据输入的关键字显示.
CONTROLLER
public function actionIndex()
{
$session = Yii::$app->session;
//$searchModel = new PayslipTemplateSearch();
$PayslipEmailConfig = PayslipEmailConfig::find()->where(['company_id'=> new \MongoId($session['company_id'])])->one();
$payslipTemplateA = PayslipTemplate::find()->where(['company_id' => new \MongoId($session['company_id'])])->andwhere(['template_name' => 'A'])->one();
$payslipTemplateB = PayslipTemplate::find()->where(['company_id' => new \MongoId($session['company_id'])])->andwhere(['template_name' => 'B'])->one();
$pTemplateModel = PayslipTemplate::find()->where(['company_id' => new \MongoId($session['company_id'])])->all();
$user = User::find()->where(['_id' => new \MongoId($session['user_id'])])->one();
$module_access = explode(',', $user->module_access);
//$dataProvider = User::find()->where(['user_type' => 'BizStaff'])->andwhere(['parent' => new \MongoId($session['company_owner'])])->all();
$searchModel = new UserSearch();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
return $this->render('index', [
'PayslipEmailConfig' => $PayslipEmailConfig,
'dataProvider' …Run Code Online (Sandbox Code Playgroud) 我正在使用 yii2 php 框架,并且在访问数据库中的所有用户时有以下查询:
$allUsersQuery = new Query;
$allUsersQuery->select(['_id'])->from('user')->where([ 'parent' => new \MongoId($session['company_owner']) ]);
$allUsers = $allUsersQuery->all();
Run Code Online (Sandbox Code Playgroud)
当我输入var_dump数组时$allUsers,它会给出以下输出:
array (size=5)
0 =>
array (size=1)
'_id' =>
object(MongoId)[147]
public '$id' => string '55d5a227650fc90c35000044' (length=24)
1 =>
array (size=1)
'_id' =>
object(MongoId)[148]
public '$id' => string '55d5a22a650fc90c35000047' (length=24)
2 =>
array (size=1)
'_id' =>
object(MongoId)[149]
public '$id' => string '55d5a22a650fc90c3500004a' (length=24)
3 =>
array (size=1)
'_id' =>
object(MongoId)[150]
public '$id' => string '55d5a22b650fc90c3500004d' (length=24)
4 =>
array (size=1) …Run Code Online (Sandbox Code Playgroud) HTML:
<div class="input-group">
<input type="text" class="form-control" name="keyword" id="searchbox" onkeypress="return checkLength()"/>
<span class="btn btn-primary input-group-addon" onclick="checkLength()"><i class="fa fa-search"></i></span>
</div>
Run Code Online (Sandbox Code Playgroud)
我只添加了一个span而不是input提交按钮的元素.如何验证用户是否键入或输入不少于2个字符?如果用户只键入1个字符,然后按下该搜索按钮或只需按Enter键,搜索字段底部应显示红色错误消息"关键字不应少于2个字符"或类似内容.
我试过这段代码,但它不起作用:
function checkLength(){
var textbox = document.getElementById("searchbox");
if(textbox.value.length <= 10 && textbox.value.length >= 2){
alert("success");
} else {
alert("Keyword should be not less than 2 characters");
$(document).keypress(function (e) {
var keyCode = (window.event) ? e.which : e.keyCode;
if (keyCode && keyCode == 13) {
e.preventDefault();
return false;
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
需要帮忙.谢谢.
编辑:
在输入关键字并点击回车键后,页面将重定向到搜索结果页面,但如果输入的关键字没有2个或更多字符,则应该防止发生这种情况,因此,在搜索字段下方显示红色文本错误消息.怎么做?