バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > ■問い合わせページでの項目について

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
ゲスト
投稿日時: 2007/7/31 14:08
対応状況: −−−
■問い合わせページでの項目について
いつもお世話になっております。
現在問い合わせページを変更しているのですが、行き詰ってしまいました。。

問い合わせページの項目には
<お名前・お名前(カナ)・メールアドレス・確認用メールアドレス・問い合わせ内容>
が有るのですが、それにいくつか項目を追加しようとしています。

それに伴い、下記のファイルを変更したのですが、動作不全となってしまいます。
確認ページには増やした項目の値が反映されますが、確認ページの”戻る”ボタンを押して入力ページへ戻ると、
増やした項目に入っていた値が消えてしまいます。

------------------------------------------------
■□変更した箇所□■

○/data/Smarty/templates/contact/index.tpl
(入力ページ)

<td bgcolor="#f0f0f0" class="fs12n">項目A</td>
<td bgcolor="#ffffff" class="fs10n">
<span class="red"><!--{$arrErr.koumoku_a}--></span>
<input type="text" name="koumoku_a" value="<!--{$arrForm.koumoku_a|escape}-->"
maxlength="<!--{$smarty.const.STEXT_LEN}-->" size="60" class="box60"
style="<!--{if $arrErr.koumoku_a != ""}-->background-color: <!--{$smarty.const.ERR_COLOR}--><!--{/if}-->" />
<span class="red"> (上限<!--{$smarty.const.STEXT_LEN}-->文字)</span>
</td>

------------------------------------------------
○/data/Smarty/templates/contact/confirm.tpl
(確認ページ)

<tr>
<td bgcolor="#f0f0f0" class="fs12n">項目A</td>
<td bgcolor="#ffffff" class="fs12n"><!--{$arrForm.koumoku_a|escape}--></td>
</tr>

------------------------------------------------
○/html/contact/index.php
(php:動作)

//フォーム値変換用カラム
$arrConvertColumn = array(
  〜省略〜
  array( "column" => "koumoku_a", "convert" => "KVa" ),
  〜省略〜
);


//エラーチェック処理部
function lfErrorCheck($array) {
$objErr = new SC_CheckError($array);
  〜省略〜
  $objErr->doFunc(array("項目A", "koumoku_a", STEXT_LEN), array("MAX_LENGTH_CHECK"));
〜省略〜

------------------------------------------------

恐らく、
 switch ($_POST['mode']){
内の
 case 'return':
箇所での処理で値を入力ページへ受け渡しているとは思うのですが・・そこで止まってしまいました。。

PHP初心者のため変更して当たり前の箇所に気づいていないかもしれません…
ご存知の方がいらっしゃいましたら、アドバイスどうかよろしくお願いいたします。
homan
投稿日時: 2007/7/31 14:56
対応状況: −−−
仙人
登録日: 2007/7/2
居住地: 宮崎県宮崎市
投稿: 633
Re: ■問い合わせページでの項目について
こんにちわー!

引用:

○/data/Smarty/templates/contact/index.tpl
(入力ページ)

<td bgcolor="#f0f0f0" class="fs12n">項目A</td>
<td bgcolor="#ffffff" class="fs10n">
<span class="red"><!--{$arrErr.koumoku_a}--></span>
<input type="text" name="koumoku_a" value="<!--{$arrForm.koumoku_a|escape}-->"
maxlength="<!--{$smarty.const.STEXT_LEN}-->" size="60" class="box60"
style="<!--{if $arrErr.koumoku_a != ""}-->background-color: <!--{$smarty.const.ERR_COLOR}--><!--{/if}-->" />
<span class="red"> (上限<!--{$smarty.const.STEXT_LEN}-->文字)</span>
</td>


の中にある input タグ内の
value="<!--{$arrForm.koumoku_a|escape}-->"


を(「arrForm.」を消して)
value="<!--{$koumoku_a|escape}-->"


としてみてはいかがでしょうか。


----------------
このコミュニティでの投稿はボランティアの範囲に留めさせていただいています。個別の相談やカスタマイズは有償にて承っておりますのでご相談下さい。

[url=http://www.eccube-school.jp/]EC-CUBE

ゲスト
投稿日時: 2007/7/31 19:16
対応状況: −−−
アドバイス頂き、ありがとうございます。
"$arrForm"を消してしまうと、確認ページへの値の受け渡しもできなくなってしまいました…

また、入力ミスなどで入力ページが再表示される際にも値が消えてしまいます。。
drednote
投稿日時: 2007/7/31 23:28
対応状況: −−−
常連
登録日: 2007/7/30
居住地: 滋賀
投稿: 41
Re: アドバイス頂き、ありがとうございます。
確認ページ側のarrFormを消してないってオチとか……
は無いかな?w
homan
投稿日時: 2007/7/31 23:46
対応状況: −−−
仙人
登録日: 2007/7/2
居住地: 宮崎県宮崎市
投稿: 633
Re: アドバイス頂き、ありがとうございます。
う〜ん 謎ですねぇ。

ちなみに
引用:
"$arrForm"を消してしまうと、確認ページへの値の受け渡しもできなくなってしまいました…

とありますが "$"は残していますよね?


僕の場合、他の項目をコピーして貼り付けて
変数名だとかを変更しただけで全てうまくいきました。
エラーチェック、確認画面への受け渡し、戻ったときのデータ保持で問題はありませんでした。

メール配信でもきちんと値を取得できましたよ。
(お問い合わせメールテンプレートはデフォルトだと項目不足なので
http://xoops.ec-cube.net/modules/newbb/viewtopic.php?topic_id=875&forum=11&post_id=2628#forumpost2628
を参考に追加しました)

-------------
うまくいった例(例えば会社名を追加した場合)
※HTMLソースを若干いじっているので、
デフォルトのHTMLソースと異なりますが、
重要な部分は一緒です。


●data/Smarty/templates/contact/index.tpl
<tr>
<th class="th-contact">会社名</th>
<td class="td-contact">
<span class="attention"><!--{$arrErr.company}--><!--{$arrErr.company}--></span>
&nbsp;<input type="text" name="company" value="<!--{$company|escape}-->" 
maxlength="<!--{$smarty.const.STEXT_LEN}-->" style="<!--{$arrErr.company|sfGetErrorColor}-->" class="box15" />
</td>
</tr>


●data/Smarty/templates/contact/confirm.tpl

<tr>
<th class="th-contact">会社名</th>
<td class="td-contact"><!--{$arrForm.company|escape}--></td>
</tr>


●html/contact/index.php

//フォーム値変換用カラム
$arrConvertColumn = array(

	〜省略〜

	 array(  "column" => "company", "convert" => "aKV" ),

	〜省略〜
);

------------
//エラーチェック処理部
function lfErrorCheck($array) {

	〜省略〜

	$objErr->doFunc(array("会社名", 'company', STEXT_LEN), array("SPTAB_CHECK","MAX_LENGTH_CHECK"));

	〜省略〜
}

以上です。
(エラーチェック処理部の STEXT_LEN値は”お名前(姓)”のものをコピーしたので、
必要に応じて data/conf/conf.php でオリジナル項目用にdefineで定数を設定してください。)


----------------
このコミュニティでの投稿はボランティアの範囲に留めさせていただいています。個別の相談やカスタマイズは有償にて承っておりますのでご相談下さい。

[url=http://www.eccube-school.jp/]EC-CUBE

drednote
投稿日時: 2007/8/1 1:16
対応状況: −−−
常連
登録日: 2007/7/30
居住地: 滋賀
投稿: 41
Re: アドバイス頂き、ありがとうございます。
なるほど私もソースを良く見ないで勘違いしてたみたいですね。
Confirm.tplはarrFormがついてないと不味いんだ。

で、投稿者氏は元々のソースで、確認画面から戻ったら値が入ってないと
言っていますが
index.tplのvalue=の部分がarrForm配列の要素として定義されてるから
エラーになる、という事ですね。
index.phpのreturnでは

$objPage->$key = $val;

こうやって定義されていて、$valはconfirm.tplで

<input type="hidden" name="<!--{$key}-->" value="<!--{$item|escape}-->">

こう定義されており、また$keyはarrForm配列内の各要素として定義されているので
confirm.tpl表示時にはarrFormに値が入ってないといけないが、
index.tpl表示時には配列の要素としてではなく夫々別々の変数として
保持している状態になっている、と。
であるなら元々投稿されていたソースのindex.tplのarrFormだけ
取っ払えば上手く行く筈ですね、確かに。
私も参考になりました。
ゲスト
投稿日時: 2007/8/1 11:59
対応状況: −−−
homan様、アドバイス頂き、ありがとうございます。
はじめのアドバイスを勘違いしておりまして、確認画面でもarrFormを消してしまっておりました。。
2度目にいただきましたアドバイスを元にしたところ、きちんと動きました!

drednote様もまとめていただきありがとうございます。

とても参考になりました。
アドバイス頂き、誠にありがとうございました。

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


 



ログイン


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

統計情報

総メンバー数は90,228名です
総投稿数は110,340件です

投稿数ランキング

1
seasoft
7369
2
468
3217
3
AMUAMU
2712
4
nanasess
2314
5
umebius
2085
6
yuh
1819
7
h_tanaka
1688
8
red
1571
9
mcontact
1356
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
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.