首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在Yii2中获取按类别排序项的参数?

如何在Yii2中获取按类别排序项的参数?
EN

Stack Overflow用户
提问于 2015-02-17 17:32:48
回答 1查看 946关注 0票数 0

我使用Yii2高级模板。在我的数据库表中,我有带有categry字段的项(从1..(至inf)

主计长的行动:

代码语言:javascript
代码运行次数:0
运行
复制
public function actionIndex()
{
    $searchModel = new AdsSearch();
    $dataProvider = $searchModel->search(Yii::$app->request->queryParams);

    return $this->render('index', [
        'searchModel' => $searchModel,
        'dataProvider' => $dataProvider,
    ]);
}

查看:

代码语言:javascript
代码运行次数:0
运行
复制
<?= ListView::widget([
    'dataProvider' => $dataProvider,
    'itemOptions' => ['class' => 'item'],
    'itemView' => '_item_view',,
]) ?>

我已经启用了prettyUrl

代码语言:javascript
代码运行次数:0
运行
复制
'urlManager' => [
            'enablePrettyUrl' => true,
            'showScriptName' => false,
        ],

和前端/web/中的.htaccess

代码语言:javascript
代码运行次数:0
运行
复制
RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php

1)如何显示仅按类别查找的项目?现在mysite.com/items显示了所有具有混合类别的项目,我想要使mysite.com/ items /cat/1或mysite.com/items/1使用category = 1显示类别。

( 2)是否有文章将mysite.com/items/类别-name-url改为编号?我将类别名称存储在$app->params中。下一个带有id = 5的项目页面将是mysite.com/items/items name-url/5。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-17 19:00:07

1)在urlManager中的配置中放置:

'items/cat/<id:\d+>' => '{YOUR_CONTROLLER}/{YOUR_ACTION}',

controller中是这样的:

代码语言:javascript
代码运行次数:0
运行
复制
public function actionIndex($id) // yii2 provide $id form url
    {                         

        $dataProvider = new ActiveDataProvider([
            'query' => AdsSearch::find()->where(['category' => $id]),
            'pagination' => [
                'pageSize' => 20,
            ],
        ]);

        return $this->render('index', [
            'dataProvider' => $dataProvider,
            'category' => $category
        ]);
    }

2)在urlManager中的配置中放置:

'items/<category>' => '{YOUR_CONTROLLER}/{YOUR_ACTION}',

controller

代码语言:javascript
代码运行次数:0
运行
复制
$subCategory = Yii::$app->request->get('category');

        $dataProvider = new ActiveDataProvider([
            'query' => AdsSearch::find()->where(['categoryUrl' => $subCategory]),
            'pagination' => [
                'pageSize' => 20,
            ],
        ]);

        return $this->render('index', [
            'dataProvider' => $dataProvider,
            'category' => $category
        ]);

或者在我的项目中,比如CategoryGoods模型:

代码语言:javascript
代码运行次数:0
运行
复制
$category = Category::findOne(['url' => $subCategory]);

        $dataProvider = new ActiveDataProvider([
            'query' => Goods::find()->where(['categoryId' => $category->id])->with('mainPhoto'),
            'pagination' => [
                'pageSize' => 20,
            ],
        ]);

        return $this->render('index', [
            'dataProvider' => $dataProvider,
            'category' => $category
        ]);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28567489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档