バージョン選択
フォーラム
メニュー
オンライン状況
|
|
54 人のユーザが現在オンラインです。 (46 人のユーザが フォーラム を参照しています。) |
|
|
フロント機能
投稿者 |
スレッド |
mizuvan |
投稿日時: 2014/11/27 16:57
対応状況: −−−
|
長老 登録日: 2013/3/26 居住地: 投稿: 253 |
Re: 会員登録せずに購入手続きができなくなりました。 いろいろとありがとうございます。 しっかり理解出来ていなくすいません・・ $this->arrErr ですが、action() の最後辺りというのはこのような 解釈ではなかったのでしょうか?? このようにやったところ Fatal error(E_PARSE): syntax error, unexpected EC-CUBEのエラーとなり ちょうど一番最後に追記したところのことを指示されました。 LC_Page_Shoping.php /**
* Page のプロセス.
*
* @return void
*/
public function action()
{
//決済処理中ステータスのロールバック
$objPurchase = new SC_Helper_Purchase_Ex();
$objPurchase->cancelPendingOrder(PENDING_ORDER_CANCEL_FLAG);
$objSiteSess = new SC_SiteSession_Ex();
$objCartSess = new SC_CartSession_Ex();
$objCustomer = new SC_Customer_Ex();
$objCookie = new SC_Cookie_Ex();
$objFormParam = new SC_FormParam_Ex();
$nonmember_mainpage = 'shopping/nonmember_input.tpl';
$nonmember_title = 'お客様情報入力';
$this->tpl_uniqid = $objSiteSess->getUniqId();
$objPurchase->verifyChangeCart($this->tpl_uniqid, $objCartSess);
$this->cartKey = $objCartSess->getKey();
// ログイン済みの場合は次画面に遷移
if ($objCustomer->isLoginSuccess(true)) {
SC_Response_Ex::sendRedirect(
$this->getNextlocation($this->cartKey, $this->tpl_uniqid,
$objCustomer, $objPurchase,
$objSiteSess));
SC_Response_Ex::actionExit();
}
// 非会員かつ, ダウンロード商品の場合はエラー表示
else {
if ($this->cartKey == PRODUCT_TYPE_DOWNLOAD) {
$msg = 'ダウンロード商品を含むお買い物は、会員登録が必要です。<br/>'
. 'お手数ですが、会員登録をお願いします。';
SC_Utils_Ex::sfDispSiteError(FREE_ERROR_MSG, $objSiteSess, false, $msg);
SC_Response_Ex::actionExit();
}
}
switch ($this->getMode()) {
// ログイン実行
case 'login':
$this->lfInitLoginFormParam($objFormParam);
$objFormParam->setParam($_POST);
$objFormParam->trimParam();
$objFormParam->convParam();
$objFormParam->toLower('login_email');
$this->arrErr = $objFormParam->checkError();
// ログイン判定
if (SC_Utils_Ex::isBlank($this->arrErr)
&& $objCustomer->doLogin($objFormParam->getValue('login_email'),
$objFormParam->getValue('login_pass'))) {
// クッキー保存判定
if ($objFormParam->getValue('login_memory') == '1' && strlen($objFormParam->getValue('login_email')) >= 1) {
$objCookie->setCookie('login_email', $objFormParam->getValue('login_email'));
} else {
$objCookie->setCookie('login_email', '');
}
// モバイルサイトで携帯アドレスの登録が無い場合、携帯アドレス登録ページへ遷移
if (SC_Display_Ex::detectDevice() == DEVICE_TYPE_MOBILE) {
if (!$objCustomer->hasValue('email_mobile')) {
SC_Response_Ex::sendRedirectFromUrlPath('entry/email_mobile.php');
SC_Response_Ex::actionExit();
}
}
// スマートフォンの場合はログイン成功を返す
elseif (SC_Display_Ex::detectDevice() === DEVICE_TYPE_SMARTPHONE) {
echo SC_Utils_Ex::jsonEncode(array('success' =>
$this->getNextLocation($this->cartKey, $this->tpl_uniqid,
$objCustomer, $objPurchase,
$objSiteSess)));
SC_Response_Ex::actionExit();
}
SC_Response_Ex::sendRedirect(
$this->getNextLocation($this->cartKey, $this->tpl_uniqid,
$objCustomer, $objPurchase,
$objSiteSess));
SC_Response_Ex::actionExit();
}
// ログインに失敗した場合
else {
// 仮登録の場合
if (SC_Helper_Customer_Ex::checkTempCustomer($objFormParam->getValue('login_email'))) {
if (SC_Display_Ex::detectDevice() === DEVICE_TYPE_SMARTPHONE) {
echo $this->lfGetErrorMessage(TEMP_LOGIN_ERROR);
SC_Response_Ex::actionExit();
} else {
SC_Utils_Ex::sfDispSiteError(TEMP_LOGIN_ERROR);
SC_Response_Ex::actionExit();
}
} else {
if (SC_Display_Ex::detectDevice() === DEVICE_TYPE_SMARTPHONE) {
echo $this->lfGetErrorMessage(SITE_LOGIN_ERROR);
SC_Response_Ex::actionExit();
} else {
SC_Utils_Ex::sfDispSiteError(SITE_LOGIN_ERROR);
SC_Response_Ex::actionExit();
}
}
}
break;
// お客様情報登録
case 'nonmember_confirm':
$this->tpl_mainpage = $nonmember_mainpage;
$this->tpl_title = $nonmember_title;
$this->lfInitParam($objFormParam);
$objFormParam->setParam($_POST);
$this->arrErr = $this->lfCheckError($objFormParam);
if (SC_Utils_Ex::isBlank($this->arrErr)) {
$this->lfRegistData($this->tpl_uniqid, $objPurchase, $objCustomer, $objFormParam);
$arrParams = $objFormParam->getHashArray();
$shipping_id = $arrParams['deliv_check'] == '1' ? 1 : 0;
$objPurchase->setShipmentItemTempForSole($objCartSess, $shipping_id);
$objSiteSess->setRegistFlag();
SC_Response_Ex::sendRedirect(SHOPPING_PAYMENT_URLPATH);
SC_Response_Ex::actionExit();
}
break;
// 前のページに戻る
case 'return':
SC_Response_Ex::sendRedirect(CART_URL);
SC_Response_Ex::actionExit();
break;
// 複数配送ページへ遷移
case 'multiple':
// 複数配送先指定が無効な場合はエラー
if (USE_MULTIPLE_SHIPPING === false) {
SC_Utils_Ex::sfDispSiteError(PAGE_ERROR, '', true);
SC_Response_Ex::actionExit();
}
$this->lfInitParam($objFormParam);
$objFormParam->setParam($_POST);
$this->arrErr = $this->lfCheckError($objFormParam);
if (SC_Utils_Ex::isBlank($this->arrErr)) {
$this->lfRegistData($this->tpl_uniqid, $objPurchase, $objCustomer, $objFormParam, true);
$objSiteSess->setRegistFlag();
SC_Response_Ex::sendRedirect(MULTIPLE_URLPATH);
SC_Response_Ex::actionExit();
}
$this->tpl_mainpage = $nonmember_mainpage;
$this->tpl_title = $nonmember_title;
break;
// お客様情報入力ページの表示
case 'nonmember':
$this->tpl_mainpage = $nonmember_mainpage;
$this->tpl_title = $nonmember_title;
$this->lfInitParam($objFormParam);
// ※breakなし
default:
// 前のページから戻ってきた場合は, お客様情報入力ページ
if (isset($_GET['from']) && $_GET['from'] == 'nonmember') {
$this->tpl_mainpage = $nonmember_mainpage;
$this->tpl_title = $nonmember_title;
$this->lfInitParam($objFormParam);
} else {
// 通常はログインページ
$this->lfInitLoginFormParam($objFormParam);
}
$this->setFormParams($objFormParam, $objPurchase, $this->tpl_uniqid);
break;
}
// 入力値の取得
$this->arrForm = $objFormParam->getFormParamList();
// 記憶したメールアドレスを取得
$this->tpl_login_email = $objCookie->getCookie('login_email');
if (!SC_Utils_Ex::isBlank($this->tpl_login_email)) {
$this->tpl_login_memory = '1';
}
// 携帯端末IDが一致する会員が存在するかどうかをチェックする。
if (SC_Display_Ex::detectDevice() === DEVICE_TYPE_MOBILE) {
$this->tpl_valid_phone_id = $objCustomer->checkMobilePhoneId();
}
$this->arrErr //エラーログ
}
|
|
|
mizuvan |
投稿日時: 2014/11/27 17:04
対応状況: −−−
|
長老 登録日: 2013/3/26 居住地: 投稿: 253 |
Re: 会員登録せずに購入手続きができなくなりました。 失礼いたしました。 カスタマイズした部分は、おっしゃる通りの会員登録時フォーム初期化のところです。 data/class/helper/SC_Helper_Customer.php /**
* 会員登録時フォーム初期化
*
* @param SC_FormParam $objFormParam SC_FormParam インスタンス
* @param boolean $isAdmin true:管理者画面 false:会員向け
* @access public
* @return void
*/
public function sfCustomerEntryParam(&$objFormParam, $isAdmin = false)
{
SC_Helper_Customer_Ex::sfCustomerCommonParam($objFormParam);
SC_Helper_Customer_Ex::sfCustomerRegisterParam($objFormParam, $isAdmin);
if ($isAdmin) {
$objFormParam->addParam('会員ID', 'customer_id', INT_LEN, 'n', array('NUM_CHECK'));
$objFormParam->addParam('携帯メールアドレス', 'email_mobile', null, 'a', array('NO_SPTAB', 'EMAIL_CHECK', 'SPTAB_CHECK' ,'EMAIL_CHAR_CHECK', 'MOBILE_EMAIL_CHECK'));
$objFormParam->addParam('会員状態', 'status', INT_LEN, 'n', array('EXIST_CHECK', 'NUM_CHECK', 'MAX_LENGTH_CHECK'));
$objFormParam->addParam('SHOP用メモ', 'note', LTEXT_LEN, 'KVa', array('MAX_LENGTH_CHECK'));
$objFormParam->addParam('所持ポイント', 'point', INT_LEN, 'n', array('EXIST_CHECK', 'NUM_CHECK'), 0);
$objFormParam->addParam('登録日', $prefix . 'day2', STEXT_LEN, 'n', array('EXIST_CHECK','NUM_CHECK', 'MAX_LENGTH_CHECK')); //追加
}
if (SC_Display_Ex::detectDevice() == DEVICE_TYPE_MOBILE) {
// 登録確認画面の「戻る」ボタンのためのパラメーター
$objFormParam->addParam('戻る', 'return', '', '', array(), '', false);
}
}
|
|
|
BLT |
投稿日時: 2015/2/17 23:45
対応状況: −−−
|
新米 登録日: 2014/6/27 居住地: 投稿: 1 |
Re: 会員登録せずに購入手続きができなくなりました。 はじめまして。
私もmizuvan様と同様のトラブルが発生してここにたどり着きました。
皆様のご指摘などを参考にしてみましたところ、私の環境では、
1.LC_Page_Shopping.phpの「不要なパラメーターの削除」にSC_helper_Customer.phpで追加した必須項目を増やす
$objFormParam->removeParam('order_***'); //追加
2.SC_helper_Customer.phpの[reminder_answer]と[reminder]をコメントアウトしている(使用していない)ので、LC_Page_Shopping.phpの同項目もコメントアウト
//$objFormParam->removeParam('order_reminder'); //$objFormParam->removeParam('order_reminder_answer');
3.デフォルトのデザインテンプレートでは[性別]が必須項目になっているのですが、当方が導入しているデザインテンプレートでは、「性別」の項目自体が表示されていなかったので、「不要なパラメーターの削除」に追加
$objFormParam->removeParam('order_sex'); //追加
これで解決しました。
すでに解決済みかもしれませんが、会員項目の変更した個所を見直すといいかもしれません。
EC-CUBE 2.13.2 DBサーバー PostgreSQL 8.1.23
|
|
|
|
統計情報
総メンバー数は88,290名です
総投稿数は109,689件です
|