バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

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

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
erukun
投稿日時: 2022/5/1 15:39
対応状況: 確認中
一人前
登録日: 2021/2/22
居住地: 国内
投稿: 81
【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 にブロックレイアウトを読み込みさせる方法を教えていただけますでしょうか。
どうぞよろしくお願いいたします。
erukun
投稿日時: 2022/5/4 8:32
対応状況: 保留
一人前
登録日: 2021/2/22
居住地: 国内
投稿: 81
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);
    }
}




まで情報が渡っていないのかなと思いました。。。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン



統計情報

総メンバー数は74,626名です
総投稿数は104,055件です

投稿数ランキング

1
seasoft
7333
2
468
3217
3
AMUAMU
2712
4
nanasess
2202
5
umebius
2074
6
yuh
1664
7
red
1498
8
h_tanaka
1188
9
tsuji
942
10
fukap
907
11
shutta
835
12
tao_s
794
13 ramrun 789
14 karin 689
15 sumida 641
16
homan
633
17 DELIGHT 572
18
patapata
502
19
flealog
485
20 tonton 437


ネットショップの壺

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

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