本文整理汇总了PHP中Eccube\Application::renderView方法的典型用法代码示例。如果您正苦于以下问题:PHP Application::renderView方法的具体用法?PHP Application::renderView怎么用?PHP Application::renderView使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Eccube\Application
的用法示例。
在下文中一共展示了Application::renderView方法的14个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: onRenderProductListBefore
/**
* onRenderProductListBefore.
*
* @param FilterResponseEvent $event
*/
public function onRenderProductListBefore(FilterResponseEvent $event)
{
log_info('CategoryContent eccube.event.render.product_list.before start');
$app = $this->app;
$request = $event->getRequest();
$response = $event->getResponse();
$id = $request->query->get('category_id');
// category_idがない場合、レンダリングを変更しない
if (!$id) {
return;
}
$CategoryContent = $app['eccube.plugin.category_content.repository.category_content']->find($id);
// 登録がない、もしくは空で登録されている場合、レンダリングを変更しない
if (!$CategoryContent || !$CategoryContent->getContent()) {
log_info('CategoryContent eccube.event.render.product_list.before not content end');
return;
}
// twigから挿入するhtmlを生成する
$snipet = $this->app->renderView('CategoryContent/Resource/template/default/category_content.twig', array('PluginCategoryContent' => $CategoryContent));
// htmlの挿入処理
$html = $response->getContent();
$search = self::CATEGORY_CONTENT_TAG;
if (strpos($html, $search)) {
// タグの位置に挿入する場合
log_info('Render category content with ', array('CATEGORY_CONTENT_TAG' => $search));
$replace = $search . $snipet;
$newHtml = str_replace($search, $replace, $html);
$response->setContent($newHtml);
} else {
// Elementを探して挿入する場合
libxml_use_internal_errors(true);
$dom = new \DOMDocument();
$dom->loadHTML('<?xml encoding="UTF-8">' . $html);
$dom->encoding = 'UTF-8';
$dom->formatOutput = true;
// 基準となるElementを取得
$navElement = $dom->getElementById('topicpath');
if (!$navElement instanceof \DOMElement) {
log_info('CategoryContent eccube.event.render.product_list.before not have dom end');
return;
}
// 挿入するNodeを生成
$template = $dom->createDocumentFragment();
$template->appendXML(htmlspecialchars($snipet));
$node = $dom->importNode($template, true);
// 基準となるElementの直後にNodeを挿入し、Responsを書き換え
$navElement->parentNode->insertBefore($node, $navElement->nextSibling);
$newHtml = html_entity_decode($dom->saveHTML(), ENT_NOQUOTES, 'UTF-8');
$response->setContent($newHtml);
}
$event->setResponse($response);
log_info('CategoryContent eccube.event.render.product_list.before end');
}
示例2: onRenderOembedAdminProductDetailEditBefore
/**
*
*
* @param FilterResponseEvent $event
*/
public function onRenderOembedAdminProductDetailEditBefore(FilterResponseEvent $event)
{
$request = $event->getRequest();
$response = $event->getResponse();
$parts_btn = $this->app->renderView('Oembed/Resource/template/admin/embed-button.twig', array());
$parts_modal = $this->app->renderView('Oembed/Resource/template/admin/embed-modal.twig', array());
$crawler = new HtmlPageCrawler($response->getContent());
$crawler->filter('#admin_product_free_area')->before($parts_btn);
$crawler->filter('body')->append($parts_modal);
// $html = $this->getHtml($crawler);
$html = $crawler->html();
$html = html_entity_decode($html, ENT_NOQUOTES, 'UTF-8');
$response->setContent($html);
$event->setResponse($response);
}
示例3: searchProduct
public function searchProduct(Application $app, Request $request)
{
if ($request->isXmlHttpRequest()) {
$searchData = array('id' => $request->get('id'));
if ($categoryId = $request->get('category_id')) {
$Category = $app['eccube.repository.category']->find($categoryId);
$searchData['category_id'] = $Category;
}
/** @var $Products \Eccube\Entity\Product[] */
$Products = $app['eccube.repository.product']->getQueryBuilderBySearchDataForAdmin($searchData)->getQuery()->getResult();
// 表示されている商品は検索結果に含めない
$productId = $request->get('product_id');
$ProductsData = array();
$count = count($Products);
$i = 0;
for ($i = 0; $i < $count; $i++) {
$Product = $Products[$i];
if ($Product->getId() != $productId) {
$ProductsData[] = $Product;
}
if ($i >= 10) {
break;
}
}
$message = '';
if ($count > $i) {
$message = '検索結果の上限を超えています。検索条件を設定してください。';
}
return $app->renderView('RelatedProduct/Resource/template/Admin/modal_result.twig', array('Products' => $ProductsData, 'message' => $message));
}
}
示例4: sendPasswordResetCompleteMail
/**
* Send password reset notification mail.
*
* @param $Customer 会員情報
*/
public function sendPasswordResetCompleteMail(\Eccube\Entity\Customer $Customer, $password)
{
$body = $this->app->renderView('Mail/reset_complete_mail.twig', array('Customer' => $Customer, 'password' => $password));
$message = \Swift_Message::newInstance()->setSubject('[' . $this->BaseInfo->getShopName() . '] パスワード変更のお知らせ')->setFrom(array($this->BaseInfo->getEmail01() => $this->BaseInfo->getShopName()))->setTo(array($Customer->getEmail()))->setBcc($this->BaseInfo->getEmail01())->setReplyTo($this->BaseInfo->getEmail03())->setReturnPath($this->BaseInfo->getEmail04())->setBody($body);
$event = new EventArgs(array('message' => $message, 'Customer' => $Customer, 'BaseInfo' => $this->BaseInfo, 'password' => $password), null);
$this->app['eccube.event.dispatcher']->dispatch(EccubeEvents::MAIL_PASSWORD_RESET_COMPLETE, $event);
$this->app->mail($message);
}
示例5: searchProduct
public function searchProduct(Application $app, Request $request)
{
if ($request->isXmlHttpRequest()) {
$searchData = array('id' => $request->get('id'));
if ($categoryId = $request->get('category_id')) {
$Category = $app['eccube.repository.category']->find($categoryId);
$searchData['category_id'] = $Category;
}
/** @var $Products \Eccube\Entity\Product[] */
$Products = $app['eccube.repository.product']->getQueryBuilderBySearchDataForAdmin($searchData)->getQuery()->getResult();
return $app->renderView('RelatedProduct/Resource/template/Admin/modal_result.twig', array('Products' => $Products));
}
}
示例6: getHtmlWrapping
/**
* HTMLの加工
*
* @param Request $request
* @param Response $response
* @return string
*/
private function getHtmlWrapping($request, $response)
{
$crawler = new Crawler($response->getContent());
$html = $this->getHtml($crawler);
/** @var FormFactory $formFactory */
// $formFactory = $this->app['form.factory'];
// $form = $formFactory->createBuilder('shopping')->getForm();
//
$parts = $this->app->renderView('ListingAdCsv\\Resource\\template\\Admin\\dropdown_parts.twig');
// TODO 挿入位置の指定方法、もっとよい方法ないのか?
try {
$crawler = $crawler->filter('ul.sort-dd');
if ($crawler->count() != 0) {
$oldHtml = $crawler->last()->html();
$newHtml = $oldHtml . $parts;
$html = str_replace($oldHtml, $newHtml, $html);
}
} catch (\InvalidArgumentException $e) {
// ignore
}
return $html;
}
示例7: index
public function index(Application $app, Request $request, $page_no = null)
{
$session = $request->getSession();
$pagination = array();
$searchForm = $app['form.factory']->createBuilder('admin_search_customer')->getForm();
//アコーディオンの制御初期化( デフォルトでは閉じる )
$active = false;
$pageMaxis = $app['eccube.repository.master.page_max']->findAll();
$page_count = $app['config']['default_page_count'];
if ('POST' === $request->getMethod()) {
$searchForm->handleRequest($request);
if ($searchForm->isValid()) {
$searchData = $searchForm->getData();
// paginator
$qb = $app['eccube.repository.customer']->getQueryBuilderBySearchData($searchData);
$page_no = 1;
$pagination = $app['paginator']()->paginate($qb, $page_no, $page_count);
// sessionのデータ保持
$session->set('eccube.admin.customer.search', $searchData);
}
} else {
if (is_null($page_no)) {
// sessionを削除
$session->remove('eccube.admin.customer.search');
} else {
// pagingなどの処理
$searchData = $session->get('eccube.admin.customer.search');
if (!is_null($searchData)) {
// 表示件数
$pcount = $request->get('page_count');
$page_count = empty($pcount) ? $page_count : $pcount;
$qb = $app['eccube.repository.customer']->getQueryBuilderBySearchData($searchData);
$pagination = $app['paginator']()->paginate($qb, $page_no, $page_count);
// セッションから検索条件を復元
if (count($searchData['sex']) > 0) {
$sex_ids = array();
foreach ($searchData['sex'] as $Sex) {
$sex_ids[] = $Sex->getId();
}
$searchData['sex'] = $app['eccube.repository.master.sex']->findBy(array('id' => $sex_ids));
}
if (!is_null($searchData['pref'])) {
$searchData['pref'] = $app['eccube.repository.master.pref']->find($searchData['pref']->getId());
}
$searchForm->setData($searchData);
}
}
}
return $app->renderView('Customer/index.twig', array('searchForm' => $searchForm->createView(), 'pagination' => $pagination, 'pageMaxis' => $pageMaxis, 'page_no' => $page_no, 'page_count' => $page_count, 'active' => $active));
}
示例8: getHtmlShopping
/**
* ご注文内容のご確認画面のHTMLを取得し、関連項目を書き込む
* お支払方法の下に下記の項目を追加する.(id=confirm_main )
* ・クーポンコードボタン
* 送料のの下に下記の項目を追加する.(class=total_box total_amountの上)
* ・値引き表示
*
* @param Request $request
* @param Response $response
* @param Order $Order
* @return mixed|string
*/
private function getHtmlShopping(Request $request, Response $response, Order $Order)
{
// HTMLを取得し、DOM化
$crawler = new Crawler($response->getContent());
$html = $this->getHtml($crawler);
try {
// クーポンが未入力でクーポン情報が存在すればクーポン情報を削除
$CouponOrder = $this->app['eccube.plugin.coupon.service.coupon']->getCouponOrder($Order->getPreOrderId());
$parts = $this->app->renderView('Coupon/View/coupon_shopping_item.twig', array('CouponOrder' => $CouponOrder));
// このタグを前後に分割し、間に項目を入れ込む
$beforeHtml = $crawler->filter('#confirm_main')->last()->html();
$pos = strrpos($beforeHtml, '<h2 class="heading02">');
if ($pos !== false) {
$oldHtml = substr($beforeHtml, 0, $pos);
$afterHtml = substr($beforeHtml, $pos);
$newHtml = $oldHtml . $parts . $afterHtml;
$html = str_replace($beforeHtml, $newHtml, $html);
}
if (!version_compare('3.0.10', Constant::VERSION, '<=')) {
// 値引き項目を表示
if ($CouponOrder) {
$total = $Order->getTotal() - $CouponOrder->getDiscount();
$Order->setTotal($total);
$Order->setPaymentTotal($total);
// 合計、値引きを再計算し、dtb_orderを更新する
$this->app['orm.em']->flush($Order);
// このタグを前後に分割し、間に項目を入れ込む
// 元の合計金額は書き込み済みのため再度書き込みを行う
$parts = $this->app->renderView('Coupon/View/discount_shopping_item.twig', array('Order' => $Order));
$form = $crawler->filter('#confirm_side .total_box')->last()->html();
$pos = strrpos($form, '</dl>');
if ($pos !== false) {
$oldHtml = substr($form, 0, $pos);
$newHtml = $oldHtml . $parts;
$html = str_replace($form, $newHtml, $html);
}
}
}
} catch (\InvalidArgumentException $e) {
// no-op
}
return $html;
}
示例9: view
public function view(Application $app, Request $request)
{
if ($request->isXmlHttpRequest()) {
$id = $request->get('id');
$MailHistory = $app['eccube.repository.mail_history']->find($id);
if (is_null($MailHistory)) {
throw new NotFoundHttpException('history not found.');
}
return $app->renderView('Order/mail_view.twig', array('subject' => $MailHistory->getSubject(), 'body' => $MailHistory->getMailBody()));
}
}
示例10: index
public function index(Application $app, Request $request, $page_no = null)
{
$session = $app['session'];
$searchForm = $app['form.factory']->createBuilder('admin_search_product')->getForm();
$pagination = array();
$disps = $app['eccube.repository.master.disp']->findAll();
$pageMaxis = $app['eccube.repository.master.page_max']->findAll();
$page_count = $app['config']['default_page_count'];
$page_status = null;
$active = false;
if ('POST' === $request->getMethod()) {
$searchForm->handleRequest($request);
if ($searchForm->isValid()) {
$searchData = $searchForm->getData();
// paginator
$qb = $app['eccube.repository.product']->getQueryBuilderBySearchDataForAdmin($searchData);
$page_no = 1;
$pagination = $app['paginator']()->paginate($qb, $page_no, $page_count);
// sessionのデータ保持
$session->set('eccube.admin.product.search', $searchData);
$active = true;
}
} else {
if (is_null($page_no)) {
// sessionを削除
$session->remove('eccube.admin.product.search');
} else {
// pagingなどの処理
$searchData = $session->get('eccube.admin.product.search');
if (!is_null($searchData)) {
// 公開ステータス
$status = $request->get('status');
if (!empty($status)) {
if ($status != $app['config']['admin_product_stock_status']) {
$searchData['link_status'] = $app['eccube.repository.master.disp']->find($status);
$searchData['status'] = null;
$session->set('eccube.admin.product.search', $searchData);
} else {
$searchData['stock_status'] = Constant::DISABLED;
}
$page_status = $status;
} else {
$searchData['link_status'] = null;
$searchData['stock_status'] = null;
}
// 表示件数
$pcount = $request->get('page_count');
$page_count = empty($pcount) ? $page_count : $pcount;
$qb = $app['eccube.repository.product']->getQueryBuilderBySearchDataForAdmin($searchData);
$pagination = $app['paginator']()->paginate($qb, $page_no, $page_count);
// セッションから検索条件を復元
if (!empty($searchData['category_id'])) {
$searchData['category_id'] = $app['eccube.repository.category']->find($searchData['category_id']);
}
if (empty($status)) {
if (count($searchData['status']) > 0) {
$status_ids = array();
foreach ($searchData['status'] as $Status) {
$status_ids[] = $Status->getId();
}
$searchData['status'] = $app['eccube.repository.master.disp']->findBy(array('id' => $status_ids));
}
$searchData['link_status'] = null;
$searchData['stock_status'] = null;
}
/*
if (count($searchData['product_status']) > 0) {
$product_status_ids = array();
foreach ($searchData['product_status'] as $ProductStatus) {
$product_status_ids[] = $ProductStatus->getId();
}
$searchData['product_status'] = $app['eccube.repository.master.product_status']->findBy(array('id' => $product_status_ids));
}
*/
$searchForm->setData($searchData);
$active = true;
}
}
}
return $app->renderView('Product/index.twig', array('searchForm' => $searchForm->createView(), 'pagination' => $pagination, 'disps' => $disps, 'pageMaxis' => $pageMaxis, 'page_no' => $page_no, 'page_status' => $page_status, 'page_count' => $page_count, 'active' => $active));
}
示例11: confirm
/**
* 購入処理
*/
public function confirm(Application $app, Request $request)
{
$cartService = $app['eccube.service.cart'];
// カートチェック
if (!$cartService->isLocked()) {
// カートが存在しない、カートがロックされていない時はエラー
return $app->redirect($app->url('cart'));
}
$Order = $app['eccube.service.shopping']->getOrder($app['config']['order_processing']);
if (!$Order) {
$app->addError('front.shopping.order.error');
return $app->redirect($app->url('shopping_error'));
}
if ('POST' !== $request->getMethod()) {
return $app->redirect($app->url('cart'));
}
// form作成
$form = $app['eccube.service.shopping']->getShippingForm($Order);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$data = $form->getData();
// トランザクション制御
$em = $app['orm.em'];
$em->getConnection()->beginTransaction();
try {
// 商品公開ステータスチェック、商品制限数チェック、在庫チェック
$check = $app['eccube.service.shopping']->isOrderProduct($em, $Order);
if (!$check) {
$em->getConnection()->rollback();
$app->addError('front.shopping.stock.error');
return $app->redirect($app->url('shopping_error'));
}
// 受注情報、配送情報を更新
$app['eccube.service.shopping']->setOrderUpdate($Order, $data);
// 在庫情報を更新
$app['eccube.service.shopping']->setStockUpdate($em, $Order);
if ($app->isGranted('ROLE_USER')) {
// 会員の場合、購入金額を更新
$app['eccube.service.shopping']->setCustomerUpdate($Order, $app->user());
}
$em->flush();
$em->getConnection()->commit();
} catch (\Exception $e) {
$em->getConnection()->rollback();
$app->log($e);
$app->addError('front.shopping.system.error');
return $app->redirect($app->url('shopping_error'));
}
// カート削除
$app['eccube.service.cart']->clear()->save();
// メール送信
$app['eccube.service.mail']->sendOrderMail($Order);
// 受注IDをセッションにセット
$app['session']->set($this->sessionOrderKey, $Order->getId());
// 送信履歴を保存.
$MailTemplate = $app['eccube.repository.mail_template']->find(1);
$body = $app->renderView($MailTemplate->getFileName(), array('header' => $MailTemplate->getHeader(), 'footer' => $MailTemplate->getFooter(), 'Order' => $Order));
$MailHistory = new MailHistory();
$MailHistory->setSubject('[' . $app['eccube.repository.base_info']->get()->getShopName() . '] ' . $MailTemplate->getSubject())->setMailBody($body)->setMailTemplate($MailTemplate)->setSendDate(new \DateTime())->setOrder($Order);
$app['orm.em']->persist($MailHistory);
$app['orm.em']->flush($MailHistory);
// 完了画面表示
return $app->redirect($app->url('shopping_complete'));
}
return $app->render('Shopping/index.twig', array('form' => $form->createView(), 'Order' => $Order));
}
示例12: complete
/**
* Complete
*
* @param Application $app
* @return mixed
*/
public function complete(Application $app, Request $request)
{
return $app->renderView('Mypage/withdraw_complete.twig');
}
示例13: sendPasswordResetCompleteMail
/**
* Send password reset notification mail.
*
* @param $Customer 会員情報
*/
public function sendPasswordResetCompleteMail(\Eccube\Entity\Customer $Customer, $password)
{
$body = $this->app->renderView('Mail/reset_complete_mail.twig', array('Customer' => $Customer, 'password' => $password));
$message = \Swift_Message::newInstance()->setSubject('[' . $this->BaseInfo->getShopName() . '] パスワード変更のお知らせ')->setFrom(array($this->BaseInfo->getEmail01() => $this->BaseInfo->getShopName()))->setTo(array($Customer->getEmail()))->setBcc($this->BaseInfo->getEmail01())->setReplyTo($this->BaseInfo->getEmail03())->setReturnPath($this->BaseInfo->getEmail04())->setBody($body);
$this->app->mail($message);
}
示例14: agreement
public function agreement(Application $app)
{
$Help = $app['eccube.repository.help']->get();
return $app->renderView('Help/agreement.twig', array('help' => $Help));
}