[Svn-src-all:2780] [version-2_12-dev 21679] #1514 モバイル> 郵便番号による住所入力機能 の対応
pingpong
admin @ mail.ec-cube.net
2012年 3月 26日 (月) 19:11:14 JST
Subversion committed to /home/svn/open 21679
http://svn.ec-cube.net/open_trac/changeset/21679
┌────────────────────────────┐
│更新者 : pingpong │
│更新日時: 2012-03-26 19:11:14 +0900 (月, 26 3月 2012)│
└────────────────────────────┘
Log:
--------------------------------------------------------
#1514 モバイル> 郵便番号による住所入力機能 の対応
Changed: [U:修正,A:追加,D:削除]
--------------------------------------------------------
U branches/version-2_12-dev/data/Smarty/templates/admin/products/category.tpl
U branches/version-2_12-dev/data/Smarty/templates/mobile/entry/index.tpl
U branches/version-2_12-dev/data/Smarty/templates/mobile/mypage/change.tpl
U branches/version-2_12-dev/data/class/pages/entry/LC_Page_Entry.php
U branches/version-2_12-dev/data/class/pages/mypage/LC_Page_Mypage_Change.php
変更: branches/version-2_12-dev/data/Smarty/templates/admin/products/category.tpl
===================================================================
--- branches/version-2_12-dev/data/Smarty/templates/admin/products/category.tpl 2012-03-26 09:28:02 UTC (rev 21678)
+++ branches/version-2_12-dev/data/Smarty/templates/admin/products/category.tpl 2012-03-26 10:11:14 UTC (rev 21679)
@@ -55,7 +55,7 @@
<!--{/if}-->
<!--{* スペース繰り返し *}-->
- <!--{section name=n loop=$level}--> <!--{/section}-->
+ <!--{section name=n loop=$level}--> 1<!--{/section}-->
<!--{* カテゴリ名表示 *}-->
<!--{assign var=disp_name value="`$arrTree[cnt].category_id`.`$arrTree[cnt].category_name`"}-->
変更: branches/version-2_12-dev/data/Smarty/templates/mobile/entry/index.tpl
===================================================================
--- branches/version-2_12-dev/data/Smarty/templates/mobile/entry/index.tpl 2012-03-26 09:28:02 UTC (rev 21678)
+++ branches/version-2_12-dev/data/Smarty/templates/mobile/entry/index.tpl 2012-03-26 10:11:14 UTC (rev 21679)
@@ -75,6 +75,8 @@
<input size="<!--{$size1}-->" type="text" name="zip01" value="<!--{if $arrForm.zip01 == ""}--><!--{$arrOtherDeliv.zip01|h}--><!--{else}--><!--{$arrForm.zip01|h}--><!--{/if}-->" maxlength="<!--{$smarty.const.ZIP01_LEN}-->" istyle="4">
-
<input size="<!--{$size2}-->" type="text" name="zip02" value="<!--{if $arrForm.zip02 == ""}--><!--{$arrOtherDeliv.zip02|h}--><!--{else}--><!--{$arrForm.zip02|h}--><!--{/if}-->" maxlength="<!--{$smarty.const.ZIP02_LEN}-->" istyle="4"><br>
+ <input type="submit" name="submit_address" value="自動住所入力"><br>
+ 郵便番号を入力後、クリックしてください。<br>
●都道府県<font color="#FF0000"> *</font><br>
<font color="#FF0000"><!--{$arrErr.pref}--></font>
変更: branches/version-2_12-dev/data/Smarty/templates/mobile/mypage/change.tpl
===================================================================
--- branches/version-2_12-dev/data/Smarty/templates/mobile/mypage/change.tpl 2012-03-26 09:28:02 UTC (rev 21678)
+++ branches/version-2_12-dev/data/Smarty/templates/mobile/mypage/change.tpl 2012-03-26 10:11:14 UTC (rev 21679)
@@ -74,6 +74,8 @@
<input size="<!--{$size1}-->" type="text" name="zip01" value="<!--{if $arrForm.zip01 == ""}--><!--{$arrOtherDeliv.zip01|h}--><!--{else}--><!--{$arrForm.zip01|h}--><!--{/if}-->" maxlength="<!--{$smarty.const.ZIP01_LEN}-->" istyle="4">
-
<input size="<!--{$size2}-->" type="text" name="zip02" value="<!--{if $arrForm.zip02 == ""}--><!--{$arrOtherDeliv.zip02|h}--><!--{else}--><!--{$arrForm.zip02|h}--><!--{/if}-->" maxlength="<!--{$smarty.const.ZIP02_LEN}-->" istyle="4"><br>
+ <input type="submit" name="submit_address" value="自動住所入力"><br>
+ 郵便番号を入力後、クリックしてください。<br>
【都道府県】<font color="#FF0000">※</font><br>
<font color="#FF0000"><!--{$arrErr.pref}--></font>
変更: branches/version-2_12-dev/data/class/pages/entry/LC_Page_Entry.php
===================================================================
--- branches/version-2_12-dev/data/class/pages/entry/LC_Page_Entry.php 2012-03-26 09:28:02 UTC (rev 21678)
+++ branches/version-2_12-dev/data/class/pages/entry/LC_Page_Entry.php 2012-03-26 10:11:14 UTC (rev 21679)
@@ -96,6 +96,32 @@
switch ($this->getMode()) {
case 'confirm':
+ if(isset($_POST['submit_address'])){
+ // 入力エラーチェック
+ $this->arrErr = $this->fnErrorCheck($_POST);
+ // 入力エラーの場合は終了
+ if (count($this->arrErr) == 0) {
+ // 郵便番号検索文作成
+ $zipcode = $_POST['zip01'] . $_POST['zip02'];
+
+ // 郵便番号検索
+ $arrAdsList = SC_Utils_Ex::sfGetAddress($zipcode);
+
+ // 郵便番号が発見された場合
+ if (!empty($arrAdsList)) {
+ $data['pref'] = $arrAdsList[0]['state'];
+ $data['addr01'] = $arrAdsList[0]['city']. $arrAdsList[0]['town'];
+ $objFormParam->setParam($data);
+
+ // 該当無し
+ } else {
+ $this->arrErr['zip01'] = '※該当する住所が見つかりませんでした。<br>';
+ }
+ }
+ $this->arrForm = $objFormParam->getHashArray();
+ break;
+ }
+
//-- 確認
$this->arrErr = SC_Helper_Customer_Ex::sfCustomerEntryErrorCheck($objFormParam);
$this->arrForm = $objFormParam->getHashArray();
@@ -275,4 +301,48 @@
}
return true;
}
+
+ /**
+ * 入力エラーのチェック.
+ *
+ * @param array $arrRequest リクエスト値($_GET)
+ * @return array $arrErr エラーメッセージ配列
+ */
+ function fnErrorCheck($arrRequest) {
+ // パラメーター管理クラス
+ $objFormParam = new SC_FormParam_Ex();
+ // パラメーター情報の初期化
+ $objFormParam->addParam('郵便番号1', 'zip01', ZIP01_LEN, 'n', array('EXIST_CHECK', 'NUM_COUNT_CHECK', 'NUM_CHECK'));
+ $objFormParam->addParam('郵便番号2', 'zip02', ZIP02_LEN, 'n', array('EXIST_CHECK', 'NUM_COUNT_CHECK', 'NUM_CHECK'));
+ // // リクエスト値をセット
+ $arrData['zip01'] = $arrRequest['zip01'];
+ $arrData['zip02'] = $arrRequest['zip02'];
+ $objFormParam->setParam($arrData);
+ // エラーチェック
+ $arrErr = $objFormParam->checkError();
+ // 親ウィンドウの戻り値を格納するinputタグのnameのエラーチェック
+ if (!$this->lfInputNameCheck($addData['zip01'])) {
+ $arrErr['zip01'] = '※ 入力形式が不正です。<br />';
+ }
+ if (!$this->lfInputNameCheck($arrdata['zip02'])) {
+ $arrErr['zip02'] = '※ 入力形式が不正です。<br />';
+ }
+
+ return $arrErr;
+ }
+
+ /**
+ * エラーチェック.
+ *
+ * @param string $value
+ * @return エラーなし:true エラー:false
+ */
+ function lfInputNameCheck($value) {
+ // 半角英数字と_(アンダーバー), []以外の文字を使用していたらエラー
+ if (strlen($value) > 0 && !preg_match("/^[a-zA-Z0-9_\[\]]+$/", $value)) {
+ return false;
+ }
+
+ return true;
+ }
}
変更: branches/version-2_12-dev/data/class/pages/mypage/LC_Page_Mypage_Change.php
===================================================================
--- branches/version-2_12-dev/data/class/pages/mypage/LC_Page_Mypage_Change.php 2012-03-26 09:28:02 UTC (rev 21678)
+++ branches/version-2_12-dev/data/class/pages/mypage/LC_Page_Mypage_Change.php 2012-03-26 10:11:14 UTC (rev 21679)
@@ -95,6 +95,31 @@
switch ($this->getMode()) {
// 確認
case 'confirm':
+ if(isset($_POST['submit_address'])){
+ // 入力エラーチェック
+ $this->arrErr = $this->fnErrorCheck($_POST);
+ // 入力エラーの場合は終了
+ if (count($this->arrErr) == 0) {
+ // 郵便番号検索文作成
+ $zipcode = $_POST['zip01'] . $_POST['zip02'];
+
+ // 郵便番号検索
+ $arrAdsList = SC_Utils_Ex::sfGetAddress($zipcode);
+
+ // 郵便番号が発見された場合
+ if (!empty($arrAdsList)) {
+ $data['pref'] = $arrAdsList[0]['state'];
+ $data['addr01'] = $arrAdsList[0]['city']. $arrAdsList[0]['town'];
+ $objFormParam->setParam($data);
+
+ // 該当無し
+ } else {
+ $this->arrErr['zip01'] = '※該当する住所が見つかりませんでした。<br>';
+ }
+ }
+ $this->arrForm = $objFormParam->getHashArray();
+ break;
+ }
$this->arrErr = SC_Helper_Customer_Ex::sfCustomerMypageErrorCheck($objFormParam);
$this->arrForm = $objFormParam->getHashArray();
@@ -163,4 +188,48 @@
SC_Helper_Customer_Ex::sfEditCustomerData($sqlval, $customer_id);
}
+
+ /**
+ * 入力エラーのチェック.
+ *
+ * @param array $arrRequest リクエスト値($_GET)
+ * @return array $arrErr エラーメッセージ配列
+ */
+ function fnErrorCheck($arrRequest) {
+ // パラメーター管理クラス
+ $objFormParam = new SC_FormParam_Ex();
+ // パラメーター情報の初期化
+ $objFormParam->addParam('郵便番号1', 'zip01', ZIP01_LEN, 'n', array('EXIST_CHECK', 'NUM_COUNT_CHECK', 'NUM_CHECK'));
+ $objFormParam->addParam('郵便番号2', 'zip02', ZIP02_LEN, 'n', array('EXIST_CHECK', 'NUM_COUNT_CHECK', 'NUM_CHECK'));
+ // // リクエスト値をセット
+ $arrData['zip01'] = $arrRequest['zip01'];
+ $arrData['zip02'] = $arrRequest['zip02'];
+ $objFormParam->setParam($arrData);
+ // エラーチェック
+ $arrErr = $objFormParam->checkError();
+ // 親ウィンドウの戻り値を格納するinputタグのnameのエラーチェック
+ if (!$this->lfInputNameCheck($addData['zip01'])) {
+ $arrErr['zip01'] = '※ 入力形式が不正です。<br />';
+ }
+ if (!$this->lfInputNameCheck($arrdata['zip02'])) {
+ $arrErr['zip02'] = '※ 入力形式が不正です。<br />';
+ }
+
+ return $arrErr;
+ }
+
+ /**
+ * エラーチェック.
+ *
+ * @param string $value
+ * @return エラーなし:true エラー:false
+ */
+ function lfInputNameCheck($value) {
+ // 半角英数字と_(アンダーバー), []以外の文字を使用していたらエラー
+ if (strlen($value) > 0 && !preg_match("/^[a-zA-Z0-9_\[\]]+$/", $value)) {
+ return false;
+ }
+
+ return true;
+ }
}
Svn-src-all メーリングリストの案内