【问题标题】:Yii2: How to display search result without gridview in Yii2Yii2:如何在 Yii2 中显示没有 gridview 的搜索结果
【发布时间】:2015-07-18 13:50:59
【问题描述】:

尝试为我的页面实现搜索框,用户必须在其中输入 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,
        ]);
    }

如何做到这一点?

【问题讨论】:

  • 嗨@Saurabh,你的问题不太清楚。你能更好地解释你需要什么吗?
  • 嗨@scaisEdge,实际上我正在为客户创建搜索页面,以便他可以看到他的工作状态。客户必须输入他的 job_id 才能获得状态。它就像亚马逊订单跟踪系统,买家输入他的订单 ID 以了解其当前订单状态。
  • 当我将 job_code 放在搜索框中显示结果但在网格视图中时,我不想要那个网格视图。
  • 我已经用图片更新了问题
  • 两件事。 1 ) 显示您的控制器执行此操作。 2 ) 您如何查看搜索结果?

标签: php search gridview yii2


【解决方案1】:

您可以通过这种方式访问​​数据提供者模型数据

对于转储结果,您无需使用 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'' (T_CONSTANT_ENCAPSED_STRING),需要标识符 (T_STRING) 或变量 (T_VARIABLE) 或 '{' 或 '$' -- 收到此错误
  • 我已经更新了答案。我希望没有其他错误。我没有测试代码就写了。
  • 我已经尝试过了,在我的情况下,我使用SqlDataProvider 获取数据,然后我需要使用对象的数组来获取最终值。喜欢这里$dataProvider-&gt;models[0]['job_code']
  • @always-a-learner 如果你有一个数组而不是对象数组,你可以通过这种方式通过键访问$dataProvider-&gt;models[0]['company_name'] 或 $yourArray[yourIndex]['company_name']
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-10
  • 2020-11-08
  • 1970-01-01
  • 1970-01-01
  • 2016-07-12
  • 1970-01-01
相关资源
最近更新 更多