バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > ログイン画面を表示せずにゲスト購入画面に移動したい

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
lightning
投稿日時: 2017/4/3 16:24
対応状況: −−−
新米
登録日: 2017/3/12
居住地:
投稿: 10
ログイン画面を表示せずにゲスト購入画面に移動したい
▼テンプレート
[EC-CUBE] 3.0.13 新規インストール
[レンタルサーバ] sakura
[OS] Apache/2.2.31
[PHP] 5.6.30
[データベース] SQLite version 3.8.10.2(テストサイトのため)
[WEBサーバ] FreeBSD 9.1-RELEASE-p24
[ブラウザ] safari 10.1
[導入プラグインの有無] 自作
[カスタマイズの有無] 無し
[現象] ログイン画面を表示せずにゲスト購入画面に移動したい

実現したいことはこちらのURLの内容と同じです。
EC-CUBE3でも、会員登録機能を無効に! | GeekStyleJapan
実際にテストしてうまくいくことが確認できました。
この改造をプラグインで実現したいと思っています。

動作としては、カート画面の「レジに進む」をクリックすると「お客様情報の入力」に移動したいと思っています。
/html/cart → /html/shopping/login (リダイレクト) → /html/shopping/nonmember


下記のようなコードを作成しました。
event.yml
eccube.event.route.shopping_login.request:
- [onFromLoginUrlInit, NORMAL]

event.php
/**
* ログイン画面をリダイレクトしてお客様情報の入力に移動
* @param EventArgs $event
*/
public function onFromLoginUrlInit(EventArgs $event)
{
$response = $this->app->redirect($this->app->url('nonmember'));
$event->setResponse($response);
return;
}


ログ表示は下記のようになっていました

[2017-04-03 16:15:23,164998] eccube.INFO [551863bc] [a959433a] [NULL] [LogListener:logResponse:94] - < 302 http://examle.com/ec-cube/html/shopping/login [GET, /ec-cube/html/shopping, 42.144.157.111, http://examle.com/ec-cube/html/cart, Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.1 Safari/603.1.30]
[2017-04-03 16:15:22,915555] eccube.INFO [551863bc] [a959433a] [NULL] [LogListener:logRequest:83] - > GET /ec-cube/html/shopping [GET, /ec-cube/html/shopping, 42.144.157.111, http://examle.com/ec-cube/html/cart, Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.1 Safari/603.1.30]
[2017-04-03 16:15:22,914411] eccube.INFO [551863bc] [a959433a] [NULL] [AnonymousAuthenticationListener:handle:62] - Populated the TokenStorage with an anonymous Token. [GET, /ec-cube/html/shopping, 42.144.157.111, http://examle.com/ec-cube/html/cart, Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.1 Safari/603.1.30]
[2017-04-03 16:15:22,908266] eccube.INFO [NULL] [a959433a] [NULL] [RouterListener:onKernelRequest:146] - Matched route "shopping". {"route_parameters":{"_controller":"\\Eccube\\Controller\\ShoppingController::index","_route":"shopping"},"request_uri":"http://examle.com/ec-cube/html/shopping"} [GET, /ec-cube/html/shopping, 42.144.157.111, http://examle.com/ec-cube/html/cart, Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.1 Safari/603.1.30]
[2017-04-03 16:15:22,001024] eccube.INFO [551863bc] [f8e1cb4b] [NULL] [LogListener:logResponse:94] - < 302 http://examle.com/ec-cube/html/shopping [GET, /ec-cube/html/cart/buystep, 42.144.157.111, http://examle.com/ec-cube/html/cart, Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.1 Safari/603.1.30]
[2017-04-03 16:15:21,832205] eccube.INFO [551863bc] [f8e1cb4b] [NULL] [LogListener:logRequest:83] - > GET /ec-cube/html/cart/buystep [GET, /ec-cube/html/cart/buystep, 42.144.157.111, http://examle.com/ec-cube/html/cart, Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.1 Safari/603.1.30]
[2017-04-03 16:15:21,830875] eccube.INFO [551863bc] [f8e1cb4b] [NULL] [AnonymousAuthenticationListener:handle:62] - Populated the TokenStorage with an anonymous Token. [GET, /ec-cube/html/cart/buystep, 42.144.157.111, http://examle.com/ec-cube/html/cart, Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.1 Safari/603.1.30]
[2017-04-03 16:15:21,824867] eccube.INFO [NULL] [f8e1cb4b] [NULL] [RouterListener:onKernelRequest:146] - Matched route "cart_buystep". {"route_parameters":{"_controller":"\\Eccube\\Controller\\CartController::buystep","_route":"cart_buystep"},"request_uri":"http://examle.com/ec-cube/html/cart/buystep"} [GET, /ec-cube/html/cart/buystep, 42.144.157.111, http://examle.com/ec-cube/html/cart, Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.1 Safari/603.1.30]
[2017-04-03 16:15:14,466660] eccube.INFO [551863bc] [e389e7fe] [2] [LogListener:logResponse:96] - < 200 [GET, /ec-cube/html/admin/setting/system/log, 42.144.157.111, http://examle.com/ec-cube/html/admin/store/plugin, Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.1 Safari/603.1.30]
[2017-04-03 16:15:14,106896] eccube.INFO [551863bc] [e389e7fe] [2] [LogListener:logRequest:83] - > GET /ec-cube/html/admin/setting/system/log [GET, /ec-cube/html/admin/setting/system/log, 42.144.157.111, http://examle.com/ec-cube/html/admin/store/plugin, Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.1 Safari/603.1.30]
[2017-04-03 16:15:14,080902] eccube.INFO [NULL] [e389e7fe] [NULL] [RouterListener:onKernelRequest:146] - Matched route "admin_setting_system_log". {"route_parameters":{"_controller":"\\Eccube\\Controller\\Admin\\Setting\\System\\LogController::index","_route":"admin_setting_system_log"},"request_uri":"http://examle.com/ec-cube/html/admin/setting/system/log"} [GET, /ec-cube/html/admin/setting/system/log, 42.144.157.111, http://examle.com/ec-cube/html/admin/store/plugin, Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.1 Safari/603.1.30]



$this->app->urlの指定の仕方が悪いのかと思うのですが、
このURLの指定がどのようなルールになっているのかよくわかりませんでした。
上記のような nonmember の他 shopping/nonmember もうまく行きませんでした。

ec cube プラグイン仕様書にも記載がないので、このあたりの情報があるサイトがありましたら教えていただけると助かります。



よろしくお願いします。
hmorita_j
投稿日時: 2017/4/3 16:29
対応状況: −−−
長老
登録日: 2017/3/3
居住地: 沈黙の巨大都市松戸
投稿: 222
Re: ログイン画面を表示せずにゲスト購入画面に移動したい
引用:
$this->app->urlの指定の仕方が悪いのかと思うのですが、
このURLの指定がどのようなルールになっているのかよくわかりませんでした。
上記のような nonmember の他 shopping/nonmember もうまく行きませんでした。


「shopping_nonmember」になります。
src/Eccube/ControllerProvider/FrontControllerProvider.phpをご参照ください。
hmorita_j
投稿日時: 2017/4/3 16:33
対応状況: −−−
長老
登録日: 2017/3/3
居住地: 沈黙の巨大都市松戸
投稿: 222
Re: ログイン画面を表示せずにゲスト購入画面に移動したい
http://qiita.com/poego/items/c78474db9fc5c416c702
こちらの記事が参考になると思います。
lightning
投稿日時: 2017/4/3 22:07
対応状況: −−−
新米
登録日: 2017/3/12
居住地:
投稿: 10
Re: ログイン画面を表示せずにゲスト購入画面に移動したい
ありがとうございます。

$response = $this->app->redirect($this->app->url('shopping_nonmember'));
$event->setResponse($response);

のように変更してみたのですが、状況変わらずでした。
URLは html/shopping/login になっていて、
画面が真っ白になった状態です。
lightning
投稿日時: 2017/4/3 22:26
対応状況: −−−
新米
登録日: 2017/3/12
居住地:
投稿: 10
Re: ログイン画面を表示せずにゲスト購入画面に移動したい
ご紹介いただいたサイトを参考にファイルを作成してみました。


ファイル:app/Plugin/CustomEntry/ServiceProvider.php
<?php
namespace Plugin\CustomEntry\ServiceProvider;
use Eccube\Application;
use Silex\Application as BaseApplication;
use Silex\ServiceProviderInterface;

class CustomEntryServiceProvider implements ServiceProviderInterface
{

public function register(BaseApplication $app)
{
// 管理画面定義
$admin = $app['controllers_factory'];
// 強制SSL
if ($app['config']['force_ssl'] == Constant::ENABLED) {
$admin->requireHttps();
}

// フロント画面定義
$front = $app['controllers_factory'];
// 強制SSL
if ($app['config']['force_ssl'] == Constant::ENABLED) {
$front->requireHttps();
}

$front->match('/shopping/login', '\Eccube\Controller\ShoppingController::nonmember')->bind('custom_entry_nonmember');
return;
}
public function boot(BaseApplication $app)
{
}
}

こちらは画面が変更されず通常のログイン画面が表示されます。
下記の部分をいくつか試してみました。

$front->match('/shopping/login', '\Eccube\Controller\ShoppingController::nonmember')->bind('custom_entry_nonmember');
$front->match('/shopping/login', '\Eccube\Controller\ShoppingController::nonmember')->bind('shopping_nonmember');
$front->match('/shopping/login', '\Eccube\Controller\ShoppingController::nonmember')->bind('shopping_login');

いずれも通常のlogin画面が表示されます。

umebius
投稿日時: 2017/4/3 23:06
対応状況: −−−
登録日: 2016/7/22
居住地:
投稿: 2085
Re: ログイン画面を表示せずにゲスト購入画面に移動したい
eccube.event.route.shopping_login.requestイベントを利用するのであれば、$eventはEventArgsではなくGetResponseEventですが、これはエラーになっていませんか?

下記で問題ないと思いますが。


    /**
     * ログイン画面をリダイレクトしてお客様情報の入力に移動
     * @param \Symfony\Component\HttpKernel\Event\GetResponseEvent $event
     */
    public function onFromLoginUrlInit(\Symfony\Component\HttpKernel\Event\GetResponseEvent $event)
    {
        $app = $this->app;
        $response = $app->redirect($app->url('shopping_nonmember'));
        $event->setResponse($response);
    }


----------------
EC-CUBEカスタマイズ・高速化・脆弱性対策・SEO ご相談ください。

2系・3系から4系へのバージョンアップ実績豊富

lightning
投稿日時: 2017/4/4 0:32
対応状況: −−−
新米
登録日: 2017/3/12
居住地:
投稿: 10
Re: ログイン画面を表示せずにゲスト購入画面に移動したい
ありがとうございます。試してみました。
残念ながら画面は真っ白な状態(これまでと同じ)になります。

異なる点としては、ログ表示のところで 302 となっていた部分が 200 になりました。

[2017-04-04 00:27:51,398540] eccube.INFO [413f4293] [91fc3c18] [2] [LogListener:logResponse:96] - < 200 [GET, /ec-cube/html/admin/setting/system/log
umebius
投稿日時: 2017/4/4 2:14
対応状況: −−−
登録日: 2016/7/22
居住地:
投稿: 2085
Re: ログイン画面を表示せずにゲスト購入画面に移動したい
私の3.0.13 では問題なく動くのですが、だめでしたか。環境は違うので一概には言えませんが
3.0.13新規インストールでカスタマイズなし、他にプラグインなしということですよね?

真っ白な画面というのは、PHPエラーが発生しているのか空白のレスポンスが返っているかどちらかだと思いますが、現在デバッグモードになっていなければデバッグモードで試してみていただけませんでしょうか。 http://examle.com/ec-cube/html/index_dev.php/cartからアクセス

デバッグモードにしても変わらなければ、onFromLoginUrlInit 内にexit("TEST");とでも書いて、そのメソッドが呼ばれているかどうか確認してみていただけませんでしょうか。


----------------
EC-CUBEカスタマイズ・高速化・脆弱性対策・SEO ご相談ください。

2系・3系から4系へのバージョンアップ実績豊富

lightning
投稿日時: 2017/4/5 2:18
対応状況: −−−
新米
登録日: 2017/3/12
居住地:
投稿: 10
Re: ログイン画面を表示せずにゲスト購入画面に移動したい
ありがとうございます。
デバッグモードにて原因が判明しました。

恥ずかしながら、__construct にて $this->app を定義していないのが原因でした。

おかげさまで思い通りの動作ができるようになりました。
またデバッグモードを知らなかったため大変勉強になりました。

ありがとうございます。
umebius
投稿日時: 2017/4/5 23:07
対応状況: −−−
登録日: 2016/7/22
居住地:
投稿: 2085
Re: ログイン画面を表示せずにゲスト購入画面に移動したい
解決されて良かったです。
index_dev.phpはまだまだあまり活用されていないようです。


----------------
EC-CUBEカスタマイズ・高速化・脆弱性対策・SEO ご相談ください。

2系・3系から4系へのバージョンアップ実績豊富

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は88,284名です
総投稿数は109,688件です

投稿数ランキング

1
seasoft
7365
2
468
3217
3
AMUAMU
2712
4
nanasess
2303
5
umebius
2085
6
yuh
1818
7
h_tanaka
1610
8
red
1567
9
mcontact
1240
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
796
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

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

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