teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

見直し

2019/07/18 00:58

投稿

退会済みユーザー
answer CHANGED
@@ -19,4 +19,26 @@
19
19
  管理画面からできそうになければ、
20
20
  ftpで
21
21
  app/cache/twig/production
22
- 以下を消してみるとか。(念のためにダウンロードしておくなどバックアップを取ってから。)
22
+ 以下を消してみるとか。(念のためにダウンロードしておくなどバックアップを取ってから。)
23
+
24
+ エラーメッセージを読み取ると、
25
+ vendor\twig\twig\lib\Twig\Template.php
26
+
27
+ `final protected function getContext($context, $item, $ignoreStrictCheck = false)`
28
+ にて、
29
+ `throw new Twig_Error_Runtime(sprintf('Variable "%s" does not exist.', $item), -1, $this->getSourceContext());`
30
+ となっている箇所があります。
31
+ それのきっかけが
32
+ `if (!array_key_exists($item, $context)) {`
33
+ で、$contextのarray()に'Product'をキーとする値を含んでいないから例外をスローしています。
34
+ で、さらにコールスタックを遡って、
35
+ Twig_Template->displayBlock()
36
+ Twig_Template->displayWithErrorHandling()
37
+ Twig_Template->display()
38
+ Twig_Template->displayWithErrorHandling()
39
+ Twig_Template->display()
40
+ Twig_Template->render()
41
+ ApplicationTrait->render()
42
+ ProductController->index()
43
+ ってなっていて、どこかのクラスのどこかのメソッドを改変した際に壊していたりしないか点検してみてはいかがでしょうか。
44
+ 与えるべきProductの値が欠落しているからエラーになっているので。

2

見直し

2019/07/18 00:58

投稿

退会済みユーザー
answer CHANGED
@@ -15,4 +15,8 @@
15
15
 
16
16
  管理画面での、
17
17
  コンテンツ管理→キャッシュ管理
18
- にてキャッシュクリアをしたあとに試すとどうなるでしょうか。
18
+ にてキャッシュクリアをしたあとに試すとどうなるでしょうか。
19
+ 管理画面からできそうになければ、
20
+ ftpで
21
+ app/cache/twig/production
22
+ 以下を消してみるとか。(念のためにダウンロードしておくなどバックアップを取ってから。)

1

見直し

2019/07/17 09:37

投稿

退会済みユーザー
answer CHANGED
@@ -1,10 +1,18 @@
1
1
  EC-CUBE 3かなと察して(twigとか書いてあるし)回答します。
2
2
  (と言ってもさほど自信はない。)
3
3
 
4
+ vendor\twig\twig\lib\Twig\Environment.php
5
+ の中で
4
- admin配下のテンプレートのどこかで、
6
+ class Twig_Environment
7
+
5
- twig制御に関わる「{%」「%}」で与えているコマンドがどこかミスをしていて
8
+ public function createTemplate($template)
9
+ にて
10
+ ```php
11
+ $name = sprintf('__string_template__%s', hash('sha256', $template, false));
12
+ ```
6
- 飛んでいんだろうと察します。
13
+ て記述があので、
14
+ テンプレートいじっててキャッシュが不整合を起こしているのかも?
7
15
 
8
- キャッシュの影響もありそうなので、
16
+ 管理画面
9
17
  コンテンツ管理→キャッシュ管理
10
18
  にてキャッシュクリアをしたあとに試すとどうなるでしょうか。