PHP

【EC-CUBE4】yamlファイルだけで既存の画面を塞ぐ(404にする)方法

どうも、katです。

今回は、EC-CUBE4で既存の画面を404エラーにしたい場合の実装方法についてになります。

EC-CUBE4では、カスタマイズする際に、Customizeフォルダ内に既存ファイルをオーバーライドしたりして使うことが多いかと思います。

しかし例えば、お問い合わせページを削除したい場合などは、わざわざお問い合わせ用のコントローラをオーバーライドして404にリダイレクトするような処理を書くのは面倒です。

そういった際に、今回の方法を使うことでyamlファイルの設定だけで簡単に表示制御をかけることができます。

EC-CUBE4のルーティングとは?

EC-CUBE4では、ルーティングはコントローラに@Routeアノテーションをつけることで設定しています。

例えば、会員登録画面の場合、EntryController.phpに以下のように記載があります。

    /**
     * 会員登録画面.
     *
     * @Route("/entry", name="entry")
     * @Template("Entry/index.twig")
     */

この、@Route(“/entry”, name=”entry”)の部分がルーティングの設定部分になります。

上記の場合、“/entry”が実際のURLで、nameに指定してある“entry”が、view側やリダイレクト時に指定する名前になります(この名前を指定すれば自動的にURLに変換される)。

404にする方法

それでは本題ですが、既存のページのURLを塞ぎたい(404にしたい)場合ですが、やり方としてはいくつかあるかと思いますが、最も簡単な方法が、configのyamlでURLを指定してやる方法です。

やり方はまず、

app/config/eccube/routes/disable.yaml

というファイルを作成します(実際はファイル名はなんでも良いです)。

次に、ファイルに以下のように記載します。

disable:
  path: /entry

やることはこれだけです。

上記では例として、会員登録画面を設定しましたが、実際は塞ぎたい画面のURLを記載してください。

それでは、上記に記載したURLにアクセスしてみてください。

エラー画面になったかと思います。

複数画面指定したい場合は?

複数画面塞ぎたい場合、pathだけを追加していくだけではうまく動きません。

複数指定する場合は、以下のように記載していきます。

disable1:
  path: /entry
disable2:
  path: /contact

ルーティング名で指定はできる?

コントローラの、@Routeのnameで指定した名前で指定ができるかどうかですが、やってみたところ、できませんでした。

今回の方法で指定できるのは、あくまでURLのみでした。

参考サイト

https://qiita.com/chihiro-adachi/items/6096f334b79dff1b284d

 

ABOUT ME
kat
プログラマー歴7年、2歳の子供を持つパパです。 興味のあることはプログラミングや今後のIT技術などです。 趣味でオンラインカードゲームのサイトを運営しております。 プログラミングを通して社会に貢献していきたいです。