バージョン選択

フォーラム

メニュー

オンライン状況

51 人のユーザが現在オンラインです。 (40 人のユーザが フォーラム を参照しています。)
登録ユーザ: 1
ゲスト: 50
mysite もっと...

サイト内検索

質問 > フロント機能 > 【404エラー not found】カスタマイズ レイアウト ブロック 読み込み error.twig ヘッダ フッタ リダイレクト

フロント機能

新規スレッドを追加する

スレッド表示 | 古いものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
erukun
投稿日時: 2022/5/4 8:32
対応状況: 保留
一人前
登録日: 2021/2/22
居住地: 国内
投稿: 118
Re: 【404エラー not found】カスタマイズ レイアウト ブロック 読み込み error.twig ヘッダ フッタ リダイレクト
3系エラーページのカスタマイズ

3系だとDBにアクセスさせないとあります。当然DBだからリスク有るし4系もその精神を継承されているんでしょうか。。。
当然DBに頼らない設計をしようよって事なのでしょうね。


いずれにせよ、
TwigInitializeListener.php
Pageに紐づくLayoutにDeviceTypeが一致するLayoutがない場合はPCのレイアウトを探す


public function setFrontVariables(GetResponseEvent $event)
    {
        $request = $event->getRequest();
        /** @var \Symfony\Component\HttpFoundation\ParameterBag $attributes */
        $attributes = $request->attributes;
        $route = $attributes->get('_route');
        if ($route == 'user_data') {
            $routeParams = $attributes->get('_route_params', []);
            $route = isset($routeParams['route']) ? $routeParams['route'] : $attributes->get('route', '');
        }

        $type = DeviceType::DEVICE_TYPE_PC;
        if ($this->mobileDetector->isMobile()) {
            $type = DeviceType::DEVICE_TYPE_MB;
        }

        // URLからPageを取得
        /** @var Page $Page */
        $Page = $this->pageRepository->getPageByRoute($route);

        /** @var PageLayout[] $PageLayouts */
        $PageLayouts = $Page->getPageLayouts();

        // Pageに紐づくLayoutからDeviceTypeが一致するLayoutを探す
        $Layout = null;
        foreach ($PageLayouts as $PageLayout) {
            if ($PageLayout->getDeviceTypeId() == $type) {
                $Layout = $PageLayout->getLayout();
                break;
            }
        }

        // Pageに紐づくLayoutにDeviceTypeが一致するLayoutがない場合はPCのレイアウトを探す
        if (!$Layout) {
            log_info('fallback to PC layout');
            foreach ($PageLayouts as $PageLayout) {
                if ($PageLayout->getDeviceTypeId() == DeviceType::DEVICE_TYPE_PC) {
                    $Layout = $PageLayout->getLayout();
                    break;
                }
            }
        }

        // 管理者ログインしている場合にページレイアウトのプレビューが可能
        if ($request->get('preview')) {
            $is_admin = $request->getSession()->has('_security_admin');
            if ($is_admin) {
                $Layout = $this->layoutRepository->get(Layout::DEFAULT_LAYOUT_PREVIEW_PAGE);

                $this->twig->addGlobal('Layout', $Layout);
                $this->twig->addGlobal('Page', $Page);
                $this->twig->addGlobal('title', $Page->getName());

                return;
            }
        }

        if ($Layout) {
            // lazy loadを制御するため, Layoutを取得しなおす.
            $Layout = $this->layoutRepository->get($Layout->getId());
        } else {
            // Layoutのデータがない場合は空のLayoutをセット
            $Layout = new Layout();
        }



で処理落ちしDBアクセス失敗しているので


https://github.com/EC-CUBE/ec-cube/blob/4.0/src/Eccube/Controller/UserDataController.php#L63


public function index(Request $request, $route)
    {
        $Page = $this->pageRepository->findOneBy(
            [
                'url' => $route,
                'edit_type' => Page::EDIT_TYPE_USER,
            ]
        );

        if (null === $Page) {
            throw new NotFoundHttpException();
        }

        $file = sprintf('@user_data/%s.twig', $Page->getFileName());

        $event = new EventArgs(
            [
                'Page' => $Page,
                'file' => $file,
            ],
            $request
        );
        $this->eventDispatcher->dispatch(EccubeEvents::FRONT_USER_DATA_INDEX_INITIALIZE, $event);

        return $this->render($file);
    }
}




まで情報が渡っていないのかなと思いました。。。
erukun
投稿日時: 2022/5/1 15:39
対応状況: 確認中
一人前
登録日: 2021/2/22
居住地: 国内
投稿: 118
【404エラー not found】カスタマイズ レイアウト ブロック 読み込み error.twig ヘッダ フッタ リダイレクト
[EC-CUBE] EC-CUBE 4.0.6-p1 正式版(公式DL版)
[レンタルサーバ] GMO Conohawingサーバ
[OS] Linux web0168.sh.tyo1 3.10.0-962.3.2.lve1.5.39.el7.x86_64 #1 SMP Thu Sep 17 06:10:33 EDT 2020 x86_64
[PHP] PHP 7.4.25
[データベース] MySQL 5.7.27-log
[WEBサーバ] Apache + nginx (バージョン確認方法が分かりません)
[ブラウザ] 有名どころ全て
[導入プラグインの有無] 有り

Amazon Payプラグイン(V2対応版) 1.1.0 AmazonPayV2 状態: 有効

クール便・冷凍便対応プラグイン 1.0.4 DeliveryCool4 状態: 有効

メールマガジンプラグイン 4.0.2 MailMagazine4 状態: 有効

お問い合わせ管理 for EC-CUBE4 1.0.5 ContactManagement4 状態: 有効

Coupon Plugin for EC-CUBE4 4.0.7 Coupon4 状態: 有効

Paidyプラグイン 1.0.5 Paidy4 状態: 有効

Securitychecker4 4.0.0 Securitychecker4 状態: 有効

商品レビュー管理プラグイン 4.0.2

売上集計プラグイン 4.0.1 状態: 有効

クロネコヤマト カード・後払い一体型決済サービス 1.2.1
YamatoPayment4  状態: 有効

EC-CUBE Ranking Plugin 1.0.1 Ranking 状態: 有効



実現したいことは、404エラーページ(error.twig)にヘッダ、フッタのレイアウトブロックを読み込みさせることです。
default_frame.twigに倣ってerror_frame.twigファイル作って
error.twigから読み込みをさせたいのですが失敗しています。外部読み込みでなく直書きしても失敗しているので書き方がそもそも可笑しいのだと思われます。



前提としてこちらを参考に user_data を非表示にしています。
user_dataを無くす方法


症状として、次のものに近いです。
一部のフロントページに遷移できない(ページがみつかりません)
(参照先は3系 当環境は4系)



例えば、
/ec-root/products/detail/100 (未登録商品のid)
にアクセスすると、レイアウトブロックは読み込まれているのでヘッダ、フッタは表示されます。
またエラー内容は次の通りです。(532の警告は常時発生しており本件と関連はないと思います。)


[2022-05-01 08:27:36] front.INFO [ebf7f03a] [9a650ef] [anon.] [Eccube\Log\Logger:log:66] - PROCESS START ["product_detail"] [GET, /ec-root/products/detail/100, IP, NULL, Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36]
[2022-05-01 08:27:36] front.INFO [ebf7f03a] [9a650ef] [anon.] [Eccube\Log\Logger:log:66] - LOGIC START ["product_detail"] [GET, /ec-root/products/detail/100, IP, NULL, Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36]
[2022-05-01 08:27:36] php.INFO [ebf7f03a] [9a650ef] [anon.] [Symfony\Component\Debug\ErrorHandler:handleError:532] - User Deprecated: The repository_method option of @ParamConverter is deprecated and will be removed in 6.0. Use the expr option or @Entity. {"exception":"[object] (ErrorException(code: 0): User Deprecated: The repository_method option of @ParamConverter is deprecated and will be removed in 6.0. Use the expr option or @Entity. at /ec-root/vendor/sensio/framework-extra-bundle/Request/ParamConverter/DoctrineParamConverter.php:314)"} [GET, /ec-root/products/detail/100, IP, NULL, Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36]
[2022-05-01 08:27:36] php.INFO [ebf7f03a] [9a650ef] [anon.] [Symfony\Component\Debug\ErrorHandler:handleError:532] - User Deprecated: The repository_method option of @ParamConverter is deprecated and will be removed in 6.0. Use the expr option or @Entity. {"exception":"[object] (ErrorException(code: 0): User Deprecated: The repository_method option of @ParamConverter is deprecated and will be removed in 6.0. Use the expr option or @Entity. at /ec-root/vendor/sensio/framework-extra-bundle/Request/ParamConverter/DoctrineParamConverter.php:314)"} [GET, /ec-root/products/detail/100, IP, NULL, Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36]
[2022-05-01 08:27:36] front.INFO [ebf7f03a] [9a650ef] [anon.] [Eccube\Log\Logger:log:66] - ページがみつかりません。 ["Eccube\\Entity\\Product object not found by the @ParamConverter annotation.","/ec-root/vendor/sensio/framework-extra-bundle/Request/ParamConverter/DoctrineParamConverter.php",107] [GET, /ec-root/products/detail/100, IP, NULL, Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36]
[2022-05-01 08:27:36] front.INFO [ebf7f03a] [9a650ef] [anon.] [Eccube\Log\Logger:log:66] - LOGIC END ["product_detail"] [GET, /ec-root/products/detail/100, IP, NULL, Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36]
[2022-05-01 08:27:36] app.INFO [N/A] [9a650ef] [anon.] [Eccube\Log\Logger:log:68] - PROCESS END ["product_detail"] [GET, /ec-root/products/detail/100, IP, NULL, Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36]


しかしながら、

/ec-root/error           (ファイル無し)    
/ec-root/products/detail/100/error (ファイル無し)


にアクセスすると、
error.twigの中身のブロックレイアウト以外のものしか表示されません。当然ヘッダ、フッタは読み込んでくれません。

エラー内容は次の通りです。
[2022-05-01 08:27:25] front.INFO [N/A] [15f947f] [N/A] [Eccube\Log\Logger:log:66] - INIT [] [GET, /ec-root/products/detail/100/error, IP, NULL, Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36]
[2022-05-01 08:27:25] front.INFO [ebf7f03a] [15f947f] [anon.] [Eccube\Log\Logger:log:66] - PROCESS START ["user_data"] [GET, /ec-root/products/detail/100/error, IP, NULL, Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36]
[2022-05-01 08:27:25] front.INFO [ebf7f03a] [15f947f] [anon.] [Eccube\Log\Logger:log:66] - fallback to PC layout [] [GET, /ec-root/products/detail/100/error, IP, NULL, Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36]
[2022-05-01 08:27:25] front.INFO [ebf7f03a] [15f947f] [anon.] [Eccube\Log\Logger:log:66] - LOGIC START ["user_data"] [GET, /ec-root/products/detail/100/error, IP, NULL, Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36]
[2022-05-01 08:27:25] front.INFO [ebf7f03a] [15f947f] [anon.] [Eccube\Log\Logger:log:66] - ページがみつかりません。 ["","/ec-root/src/Eccube/Controller/UserDataController.php",64] [GET, /ec-root/products/detail/100/error, IP, NULL, Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36]
[2022-05-01 08:27:25] front.INFO [ebf7f03a] [15f947f] [anon.] [Eccube\Log\Logger:log:66] - LOGIC END ["user_data"] [GET, /ec-root/products/detail/100/error, IP, NULL, Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36]
[2022-05-01 08:27:25] app.INFO [N/A] [15f947f] [anon.] [Eccube\Log\Logger:log:68] - PROCESS END ["user_data"] [GET, /ec-root/products/detail/100/error, IP, NULL, Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36]



error.twig 記述のファイル読み込み方法が悪いのだと思うのですが、ちょっと解消方法を見つける事が出来ませんでした。


■例 ファイル読み込み
<div class="ec-drawerRole">
    {# Layout: DRAWER #}
    {% if Layout.Drawer %}
        {{ include('block.twig', {'Blocks': Layout.Drawer}) }}
    {% endif %}
</div>



また 
user_data で独自処理



404 リダイレクト

は参考にすることが出来ませんでした。


お忙しいところ恐縮ですが error.twig にブロックレイアウトを読み込みさせる方法を教えていただけますでしょうか。
どうぞよろしくお願いいたします。
スレッド表示 | 古いものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は88,290名です
総投稿数は109,690件です

投稿数ランキング

1
seasoft
7365
2
468
3217
3
AMUAMU
2712
4
nanasess
2303
5
umebius
2085
6
yuh
1818
7
h_tanaka
1610
8
red
1568
9
mcontact
1240
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
796
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.