Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

動的ブロックを挿入するTwig拡張を実装 #4697

Closed
wants to merge 3 commits into from

Conversation

izayoi256
Copy link
Contributor

概要(Overview・Refs Issue)

#4623 のプログラム側の実装。

{{ eccube_dynamic_block('footer') }} {# コントローラなし #}
{{ eccube_dynamic_block('search_product') }} {# コントローラあり #}
{{ eccube_dynamic_block('customize', {'limit': 10}) }} {# パラメータ付きコントローラあり #}

方針(Policy)

{% if Block.use_controller %}
    {{ render(path('block_' ~ Block.file_name)) }}
{% else %}
    {{ include_dispatch('Block/' ~ Block.file_name ~ '.twig') }}
{% endif %}

上記のロジックを一つの拡張にまとめただけのもの。

render/path/include_dispatchの処理を利用するため、下記の3クラスに依存している。

  • \Symfony\Bridge\Twig\Extension\HttpKernelRuntime
  • \Symfony\Bridge\Twig\Extension\RoutingExtension
  • \Eccube\Twig\Extension\TwigIncludeExtension

テスト(Test)

コントローラなしの場合のユニットテストを追加。

相談(Discussion)

  • コントローラあり及びパラメータ付きコントローラありはテストケース内でうまく依存関係を解決できず、スキップとしてあります。いい方法があれば/(ご教授|テストを書き換えて)/uいただけると助かります。
  • eccube_block_*が既に存在するので、差別化のためにeccube_dynamic_blockという名前にしてあります。他に良い名前や、あるいはeccube_blockでも良いということであればお知らせ下さい。

マイナーバージョン互換性保持のための制限事項チェックリスト

  • 既存機能の仕様変更
  • フックポイントの呼び出しタイミングの変更
  • フックポイントのパラメータの削除・データ型の変更
  • twigファイルに渡しているパラメータの削除・データ型の変更
  • Serviceクラスの公開関数の、引数の削除・データ型の変更
  • 入出力ファイル(CSVなど)のフォーマット変更

レビュワー確認項目

  • 動作確認
  • コードレビュー
  • E2E/Unit テスト確認(テストの追加・変更が必要かどうか)
  • 互換性が保持されているか
  • セキュリティ上の問題がないか

@izayoi256
Copy link
Contributor Author

@trigger_error($name.' block is not found', E_USER_WARNING);

上記を参考にして実装したところ、scrutinizerにてエラーを握りつぶすなと言われるのですが、どうするのがお作法的にいいでしょうか?

@nanasess
Copy link
Contributor

コントローラあり及びパラメータ付きコントローラありはテストケース内でうまく依存関係を解決できず、スキップとしてあります。

E2Eテストでしたらテスト書けそうな気がします。結構大がかりになるかもしれませんが。

@okazy okazy added the enhancement 機能追加 label Sep 28, 2020
@okazy okazy added this to the 4.0.x milestone Sep 28, 2020
@chihiro-adachi chihiro-adachi modified the milestones: 4.0.x, Not release Jun 2, 2022
@chihiro-adachi
Copy link
Contributor

@izayoi256
ありがとうございます。
セキュリティ上の懸念から、#4623 のissueに関しては採用見送りとしました。
ご対応いただいたのに申し訳ありません。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement 機能追加
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants