我正试图在我的项目(一个作业门户)中实现搜索操作。我正试图在同一页上显示结果,不知道该怎么做。我已经做了以下事情。
控制器
$model = new SearchEmployee();
/*Getting Data From Search Form For Processing */
if (isset($_POST['SearchEmployee'])) {
$model->attributes = $_POST['SearchEmployee'];
$category = $_POST['SearchEmployee']['category_id'];
$skills = $_POST['SearchEmployee']['skills'];
$experience = $_POST['SearchEmployee']['experience'];
$model = SearchEmployee::model()->find(array(
'select' => array('*'), "condition" => "category_id=$category AND key_skills like'%$skills%'AND experience=$experience",
));
if($model==null)
{
Yii::app()->user->setFlash('success', "No Results");
$this->render('search');
}
else
{
$this->render('search', array('model' => $model));
}
}
/*Getting Data From Search Form For Processing */
$this->render('search', array('model' => $model));
视图:一个简短的代码
<?php
/* @var $this SiteController */
/* @var $model LoginForm */
/* @var $form CActiveForm */
$this->pageTitle=Yii::app()->name . ' - Search Employee';
$this->breadcrumbs=array(
'Search Employee',
);
$list = CHtml::listData(Category::model()->findAll(),'id','title');
?>
<h1>Search Employees</h1>
<div class="form">
<?php $form=$this->beginWidget('CActiveForm', array(
'id'=>'login-form',
'enableClientValidation'=>true,
'clientOptions'=>array(
'validateOnSubmit'=>true,
),
)); ?>
//Search Form//
<div class="row">
<?php echo $form->labelEx($model,'Skills'); ?>
<?php echo $form->textField($model,'skills'); ?>
<?php echo $form->error($model,'skills'); ?>
</div>
//Search Form// //Result Display//
<div class="view">
<h1>Results</h1>
<div class="view" id="id">
<h1>Records Display</h1>
<h4>
Name:
<?php echo $form->labelEx($model,'skills Required'); ?>
</h4>
<h4>
Skills:
<?php echo $form->labelEx($model,'Skills Required'); ?>
</h4>
<h4>
Experience:
<?php echo $form->labelEx($model,'Skills Required'); ?>
</h4>
<h5>
<?php echo CHtml::submitButton('VIew Details'); ?>
</h5>
</div>
</div>
它一直工作到模型代码执行完毕,但在重定向回页面时出现了显示错误模型未定义"。
好的,显然还有更多的错误。。让我们从头开始尝试:
"模型未定义"-因为如果$model
为null,则使用$model
参数渲染search
视图。在搜索视图中,您尝试使用$model
变量,但它当然不存在。您必须更改您的视图,这样,如果模型未定义,它就不会使用该模型。或者在搜索中至少发送一个空模型
$this->render('search',new SearchEmployee);
设置好属性后,应该正常调用$model->search()
。但似乎您自己创建了查询,所以您可以完全跳过这一行:
$model->attributes = $_POST['SearchEmployee'];