-
Notifications
You must be signed in to change notification settings - Fork 643
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
Routerの実装 #7
Comments
ここまでするなら class/pages/ -> controller に変更し、switch ($this->getMode()) を吸収してしまったほうがよくないでしょうか? |
ADMIN_DIRの機能を残すようであれば、
のようにadminをパラメータ化して、/ADMIN_DIR/loginへのアクセス時にこのルートへパースする方がいいのではないでしょうか。 nobuhiko様のコントローラ化は私も賛成ですが、そうするとビジネスロジックをコントローラから切り離さないとコントローラファイルがかなり複雑化しそうな気がします・・。 |
$arrMaps を定義した後に hook を設置して、プラグインによるルーティング定義を収集して $arrMaps に追加。 |
$arrMaps は path をキーにした連想配列にしたほうが、いろいろ扱いやすくなると思います。 |
みなさま コメントありがとうございます。
$arrMaps = array(
// http://example.com/
'/' => array(
'method' => 'GET|POST',
'dir' => '',
'class' => 'index'
),
// http://example.com/products/detail/
'/products/detail/' => array(
'method' => 'GET|POST',
'dir' => 'products',
'class' => 'detail'
),
// http://example.com/admin/products/class/
'/products/class/' => array(
'method' => 'GET|POST',
'admin' => true,
'dir' => 'products',
'class' => 'class'
),
); |
すみません。具体的なイメージがわかず、こちらもう少し詳しく教えていただけませんか? |
そうですねえ。 |
プラグイン独自のページを表示する場合に、そのページのルーティング定義を追加する必要があると思うのですが、routes.php を書き換えるのは好ましい動作ではなく、hook で解決するのがスマートだと思います。 |
パスの頭の「/」は必要でしょうか? また、method や admin などは任意の項目にして、記入がない場合はデフォルトの値を適用するほうが簡便だと思います。 |
連投ですみません。 $arrMaps = array(
// http://example.com/admin/products/class/
'admin/products/class' => array(
'method' => 'GET|POST',
'dir' => 'products',
'class' => 'class'
),
); としておき、パスの「admin」を ADMIN_DIR に差し替えれて処理すれば良いように思います。 |
HTTP_URL / HTTPS_URL をテンプレート上で記載しないといけないため、セキュリティー上、危ない実装のサイトを多く拝見します。 そのため、Routingのマッチだけではなく、URLのGenerateにも対応するほうが良いのではないでしょうか。 また、HTTPSもRoutingの値に含めてもよいのではないでしょうか。 また、Symfony ComponentのRoutingの実装が参考になるとおもいます。 PHP5.3以上のみが動作対応なのであればそのままSymfony Componentを利用するのも手かと思いますが、いかがでしょうか。 |
URLのGenerateに関して、下記イメージであってますか? $arrMaps = array(
// http://example.com/admin/products/class/
'admin/products/class' => array(
'method' => 'GET|POST',
'dir' => 'products',
'class' => 'class',
'ssl' => true,
'template' => 'product_class'
),
); また、記載できていなかったのですが、フレームワーク、SymfonyComponentは利用しない方向で考えています。 |
@pineray
こちらはどっちでもいいかな、と思っています。 一度今までの意見を整理したいと思います。 |
ご確認ありがとうございます。 Symfony Componentsについては単独での利用も可能です。 Rotingがわかりやすく簡潔になれば、カスタマイズやテンプレートの様々な問題が解決するような気がします。 現在はテンプレートに依存してしまっている Smarty テンプレートでのイメージは以下になります。 <!--{"product_detail"|path}-->
もしくは
<!--{path name="product_detail" product_id=1}-->
|
Symfony Componentsについて、ありがとうございます。
の2段階で依存してしまうので懸念しておりました。 Smartyに関しては、ちょっと話題がRoutingからズレてしまうので、 疑問に思ったことなどあれば、ご自由にIssueたてて頂いて構いませんので、 |
ありがとうございます。 それぞれが依存するという問題は「Dependency injection」(DI)という考え方も一つだと思います。 現状のEC-CUBEではほぼメンテの止まったPEARやSmartyに依存している部分もあり、PHP5.3ではNoticeエラーも頻発すると思います。 ECの中で非常にシェアが高いソフトウェアだからこそ、ぜひ、この辺りも含めてECサイトの開発に道筋をつけていただけると幸いです。 |
なるほどなるほど、ありがとうございます。 |
以下ルールを提案します。
class Hoge_Ex extends Hoge()
{
} |
Silexの採用に伴い、本件クローズいたします。 |
商品ごとポイントを空で登録できない不具合の修正
#7 【商品一覧】規格によって値段が異なるとき、「価格が低い順」とかどういうソートになっているかわからない
…re-install-plugin Implement display correct status of plugin/theme. Hide some unnecessa…
The text was updated successfully, but these errors were encountered: