Eccube\Controller\Admin\Order\EditController::searchProduct PHP Method

searchProduct() public method

public searchProduct ( Application $app, Request $request, $page_no = null )
$app Eccube\Application
$request Symfony\Component\HttpFoundation\Request
    public function searchProduct(Application $app, Request $request, $page_no = null)
    {
        if ($request->isXmlHttpRequest()) {
            $app['monolog']->addDebug('search product start.');
            $page_count = $app['config']['default_page_count'];
            $session = $app['session'];
            if ('POST' === $request->getMethod()) {
                $page_no = 1;
                $searchData = array('name' => $request->get('id'));
                if ($categoryId = $request->get('category_id')) {
                    $Category = $app['eccube.repository.category']->find($categoryId);
                    $searchData['category_id'] = $Category;
                }
                $session->set('eccube.admin.order.product.search', $searchData);
                $session->set('eccube.admin.order.product.search.page_no', $page_no);
            } else {
                $searchData = (array) $session->get('eccube.admin.order.product.search');
                if (is_null($page_no)) {
                    $page_no = intval($session->get('eccube.admin.order.product.search.page_no'));
                } else {
                    $session->set('eccube.admin.order.product.search.page_no', $page_no);
                }
            }
            $qb = $app['eccube.repository.product']->getQueryBuilderBySearchData($searchData);
            $event = new EventArgs(array('qb' => $qb, 'searchData' => $searchData), $request);
            $app['eccube.event.dispatcher']->dispatch(EccubeEvents::ADMIN_ORDER_EDIT_SEARCH_PRODUCT_SEARCH, $event);
            /** @var \Knp\Component\Pager\Pagination\SlidingPagination $pagination */
            $pagination = $app['paginator']()->paginate($qb, $page_no, $page_count, array('wrap-queries' => true));
            /** @var $Products \Eccube\Entity\Product[] */
            $Products = $pagination->getItems();
            if (empty($Products)) {
                $app['monolog']->addDebug('search product not found.');
            }
            $forms = array();
            foreach ($Products as $Product) {
                /* @var $builder \Symfony\Component\Form\FormBuilderInterface */
                $builder = $app['form.factory']->createNamedBuilder('', 'add_cart', null, array('product' => $Product));
                $addCartForm = $builder->getForm();
                $forms[$Product->getId()] = $addCartForm->createView();
            }
            $event = new EventArgs(array('forms' => $forms, 'Products' => $Products, 'pagination' => $pagination), $request);
            $app['eccube.event.dispatcher']->dispatch(EccubeEvents::ADMIN_ORDER_EDIT_SEARCH_PRODUCT_COMPLETE, $event);
            return $app->render('Order/search_product.twig', array('forms' => $forms, 'Products' => $Products, 'pagination' => $pagination));
        }
    }