RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 842820
Accepted
msupreme
msupreme
Asked:2020-06-16 21:14:52 +0000 UTC2020-06-16 21:14:52 +0000 UTC 2020-06-16 21:14:52 +0000 UTC

按 symfony 3 的顺序列出类别

  • 772

您需要按 id 显示类别;现在类别按字母顺序显示。如何实现按id输出?

编码:

类别输出

{% for child in categories %}
  <div class="b-block-grid__item">
    <a class="b-category-link" href="{{ child.getAbsoluteUrl() }}">
      {% if child.image %}
      <img src="{{ child.image|imagine_filter('rise_category_thumb') }}"
                                         class="b-category-link__image"/>
      {% else %}
      <span class="b-category-link__image b-category-link__image_noimage"></span>
      {% endif %}
      <span class="b-category-link__name">{{ child }}</span>
    </a>
  </div>
{% endfor %}

控制器

class ProductController extends Controller
{
    public function searchAction(Request $request)
    {
        $searchForm = $this->createForm(SearchForm::class, [], [
            'method' => 'GET'
        ]);

        if ($searchForm->handleRequest($request) && $searchForm->isValid()) {
            $q = $searchForm->get('q')->getData();

            $qs = Product::objects()
                ->published()
                ->filter(new QOr([
                    ['name__icontains' => $q],
                    ['sku__icontains' => $q],
                    ['content__icontains' => $q],
                ]));

            $pager = $this->createPagination($qs, [
                'pageSize' => 12,
            ]);

            return $this->render('rise/product/search.html', [
                'products' => $pager->paginate(),
                'pager' => $pager->createView(),
                'search_form' => $searchForm->createView(),
            ]);
        } else {
            return $this->render('rise/product/search.html', [
                'search_form' => $searchForm->createView(),
            ]);
        }
    }

    public function autocompleteAction(Request $request)
    {
        $searchForm = $this->createForm(SearchForm::class, [], [
            'method' => 'GET'
        ]);

        $products = [];
        if ($searchForm->handleRequest($request) && $searchForm->isValid()) {
            $q = $searchForm->get('q')->getData();

            $products = Product::objects()->published()->master()
                ->filter(new QOr([
                    ['name__icontains' => $q],
                    ['sku__icontains' => $q],
                    ['content__icontains' => $q]
                ]))->limit(20)->all();
        }

        return $this->render('rise/product/_autocomplete.html', [
            'products' => $products
        ]);
    }

    protected function getCollections(Category $category = null)
    {
        $qs = Collection::objects();
        if ($category) {
            $qs->filter(['categories__id__in' => $category->id]);
        }
        return $qs->all();
    }

    public function indexAction(Request $request)
    {
        $categories = Category::objects()->order(['name'])->all();

        $filter = $request->query->get('filter', []);
        $filterForm = $this->createForm(FilterFormType::class, $filter, [
            'action' => $this->generateUrl('admin_rise_product_list')
        ]);

        return $this->render('rise/product/index.html', [
            'categories' => $categories,
            'filterForm' => $filterForm->createView(),
        ]);
    }

    public function listAction(Request $request, $slug = null)
    {
        $category = null;
        if ($slug !== null) {
            $category = Category::objects()->get(['slug' => $slug]);
            if (null === $category) {
                throw new NotFoundHttpException();
            }
        }

        $qs = Product::objects()->published();
        if ($category) {
            $qs->filter(['category__id' => $category->id]);
        }

        if ($request->query->has('order')) {
            $sourceOrder = $request->query->get('order');
            if (false === empty($sourceOrder) && in_array($sourceOrder, ['', 'price', '-price'])) {
                $qs->order([$sourceOrder]);
            }
        }

        $filter = $request->query->get('filter', []);
        $filterForm = $this->createForm(FilterFormType::class, $filter, [
            'category' => $category,
        ]);
        $filterForm->handleRequest($request);
        if ($filterForm->isSubmitted()) {
            $this->get('rise.bundle.product.filter.product')->filterQuerySet($filterForm->getData(), $qs);
        }

        $pager = $this->createPagination($qs, [
            'pageSize' => 12,
        ]);

        $collections = $this->getCollections();

        if ($request->isXmlHttpRequest()) {
            return $this->render('rise/product/_list.html', [
                'products' => $pager->paginate(),
                'pager' => $pager->createView(),
                'category' => $category,
                'collections' => $collections,
                'filterForm' => $filterForm->createView(),
            ]);
        } else {
            return $this->render('rise/product/list.html', [
                'products' => $pager->paginate(),
                'pager' => $pager->createView(),
                'category' => $category,
                'collections' => $collections,
                'filterForm' => $filterForm->createView(),
            ]);
        }
    }

    public function viewAction(Request $request, $slug)
    {
        $product = Product::objects()->published()->get(['slug' => $slug]);
        if ($product === null) {
            throw new NotFoundHttpException();
        }

        $history = $this->get('rise.bundle.product.component.product_history');
        $history->add($product);

        $related = $product->related->all();

        $review = new Review(['product' => $product]);
        $reviewForm = $this->createForm(ReviewForm::class, $review, [
            'method' => 'POST',
            'action' => $this->generateUrl('rise_product_view', ['slug' => $slug])
        ]);
        if ($reviewForm->handleRequest($request) && $reviewForm->isValid()) {
            $review = $reviewForm->getData();
            if (false === $review->save()) {
                throw new \RuntimeException('Failed to save review');
            }

            $this->get('event_dispatcher')->dispatch(
                ReviewEvent::EVENT_NAME,
                new ReviewEvent($review)
            );

            $this->addFlash('success', 'Спасибо за ваш отзыв! Мы опубликуем его после проверки.');

            return $this->redirect($request->getRequestUri());
        }

        $reviewPager = $this->createPagination($product->reviews->filter(['is_published' => true]));

        return $this->render('rise/product/view.html', [
            'product' => $product,
            'images' => $product->getImages(),
            'related' => $related,
            'reviews' => $reviewPager->paginate(),
            'review_pager' => $reviewPager->createView(),
            'review_form' => $reviewForm->createView(),
            'collections' => $product->collection->all(),
        ]);
    }
}

symfony3
  • 1 1 个回答
  • 10 Views

1 个回答

  • Voted
  1. Best Answer
    Alex Kuznetsov
    2020-06-16T23:08:22Z2020-06-16T23:08:22Z

    在这里,在这种方法中:

    public function indexAction(Request $request)
    {
        $categories = Category::objects()->order(['name'])->all();
    
        $filter = $request->query->get('filter', []);
        $filterForm = $this->createForm(FilterFormType::class, $filter, [
            'action' => $this->generateUrl('admin_rise_product_list')
        ]);
    
        return $this->render('rise/product/index.html', [
            'categories' => $categories,
            'filterForm' => $filterForm->createView(),
        ]);
    }
    

    这是按名称排序的。只需通过 ID 进行操作,然后,我会在需要的地方以同样的方式提供。

    我说的是一条线$categories = Category::objects()->order(['name'])->all();

    • 1

相关问题

  • Symfony 3.3.10 繁重的 CPU 负载

  • 以及学说 2 CURRENT_DATE IN (array(Entity))

  • Symfony 3.0 授权

  • 以symfony 3的形式加载已经存在的文件

  • symfony 3 语言环境不重定向

  • Doctrine:doctrine 如何跟踪@Column 映射中的表名更改

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    是否可以在 C++ 中继承类 <---> 结构?

    • 2 个回答
  • Marko Smith

    这种神经网络架构适合文本分类吗?

    • 1 个回答
  • Marko Smith

    为什么分配的工作方式不同?

    • 3 个回答
  • Marko Smith

    控制台中的光标坐标

    • 1 个回答
  • Marko Smith

    如何在 C++ 中删除类的实例?

    • 4 个回答
  • Marko Smith

    点是否属于线段的问题

    • 2 个回答
  • Marko Smith

    json结构错误

    • 1 个回答
  • Marko Smith

    ServiceWorker 中的“获取”事件

    • 1 个回答
  • Marko Smith

    c ++控制台应用程序exe文件[重复]

    • 1 个回答
  • Marko Smith

    按多列从sql表中选择

    • 1 个回答
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Suvitruf - Andrei Apanasik 什么是空? 2020-08-21 01:48:09 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5