Yii2:如何在 Yii2 中显示没有 gridview 的搜索结果
Yii2: How to display search result without gridview in Yii2
尝试为我的页面实现搜索框,用户必须在其中输入 job_code 才能获取其订单状态。我得到了结果,但是这个结果在网格视图中我不想要这个网格视图。所以,我可以在页面上的不同位置放置各种属性。
用户必须输入的搜索表单 job_code
<?php $form = ActiveForm::begin(['action' => ['tracking'],'method' => 'get','class'=>'lockscreen-credentials']); ?>
<?= $form->field($searchModel, 'job_code')->textInput(array('placeholder' => 'Job Code..'))->label(false); ?>
<?= Html::submitButton('Search', ['class' => 'btn btn-primary btn-block btn-flat']) ?>
<?= Html::resetButton('Reset', ['class' => 'btn btn-primary btn-block btn-flat']) ?>
<?php ActiveForm::end(); ?>
将显示搜索结果的结果页面
<body class="lockscreen">
<?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [
'job_code',
'client_code',
'company_name',
'job_description:ntext',
'status',
'emp_email:email',
'emp_mobile',
'emp_first_name',
'emp_last_name',
],
]); ?>
</body>
控制器
public function actionIndex()
{
$model = new Status();
$searchModel = new StatusSearch();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
return $this->render('index', [
'searchModel' => $searchModel,
'dataProvider' => $dataProvider,
'model' => $model,
]);
}
public function actionTracking()
{
$model = new Status();
$searchModel = new StatusSearch();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
return $this->render('tracking', [
'searchModel' => $searchModel,
'dataProvider' => $dataProvider,
'model' => $model,
]);
}
如何实现?
您可以通过这种方式访问数据提供者模型数据
对于转储结果,您不需要使用 html 格式化代码并将视图限制为可用数据的第一行(或唯一一行)。
然后对于示例,我仅使用 echo
<body class="lockscreen">
<?php
echo 'job_code = ' . $dataProvider->models[0]->job_code .' - ' ;
echo 'client_code = ' . $dataProvider->models[0]->client_code .' - ';
echo 'company_name = ' . $dataProvider->models[0]->company_name .' - ';
echo 'job_description = ' . $dataProvider->models[0]->job_description .' - ';
echo 'status = ' . $dataProvider->models[0]->status .' - ';
// and so on
</body>
如果您需要显示多于一行的数据,显然您必须循环选择您喜欢的所有模型
尝试为我的页面实现搜索框,用户必须在其中输入 job_code 才能获取其订单状态。我得到了结果,但是这个结果在网格视图中我不想要这个网格视图。所以,我可以在页面上的不同位置放置各种属性。
用户必须输入的搜索表单 job_code
<?php $form = ActiveForm::begin(['action' => ['tracking'],'method' => 'get','class'=>'lockscreen-credentials']); ?>
<?= $form->field($searchModel, 'job_code')->textInput(array('placeholder' => 'Job Code..'))->label(false); ?>
<?= Html::submitButton('Search', ['class' => 'btn btn-primary btn-block btn-flat']) ?>
<?= Html::resetButton('Reset', ['class' => 'btn btn-primary btn-block btn-flat']) ?>
<?php ActiveForm::end(); ?>
将显示搜索结果的结果页面
<body class="lockscreen">
<?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [
'job_code',
'client_code',
'company_name',
'job_description:ntext',
'status',
'emp_email:email',
'emp_mobile',
'emp_first_name',
'emp_last_name',
],
]); ?>
</body>
控制器
public function actionIndex()
{
$model = new Status();
$searchModel = new StatusSearch();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
return $this->render('index', [
'searchModel' => $searchModel,
'dataProvider' => $dataProvider,
'model' => $model,
]);
}
public function actionTracking()
{
$model = new Status();
$searchModel = new StatusSearch();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
return $this->render('tracking', [
'searchModel' => $searchModel,
'dataProvider' => $dataProvider,
'model' => $model,
]);
}
如何实现?
您可以通过这种方式访问数据提供者模型数据
对于转储结果,您不需要使用 html 格式化代码并将视图限制为可用数据的第一行(或唯一一行)。
然后对于示例,我仅使用 echo
<body class="lockscreen">
<?php
echo 'job_code = ' . $dataProvider->models[0]->job_code .' - ' ;
echo 'client_code = ' . $dataProvider->models[0]->client_code .' - ';
echo 'company_name = ' . $dataProvider->models[0]->company_name .' - ';
echo 'job_description = ' . $dataProvider->models[0]->job_description .' - ';
echo 'status = ' . $dataProvider->models[0]->status .' - ';
// and so on
</body>
如果您需要显示多于一行的数据,显然您必须循环选择您喜欢的所有模型