バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > 問い合わせフォームに画像添付機能を追加

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
mikami
投稿日時: 2015/9/24 16:20
対応状況: −−−
半人前
登録日: 2015/9/24
居住地:
投稿: 16
問い合わせフォームに画像添付機能を追加
現在、問い合わせフォームに画像添付機能を追加しようとしております。

http://al-lucky.hatenablog.com/entry/2014/09/17/133220

上記ページを参考にしておりますが、表示をした場合にエラーが出てしまい、解決策が分からずにいます。

引用:
フォームをカスタマイズ

デフォルトのフォームではファイルをアップロード出来ないので、以下のようにカスタマイズします。

商品登録フォームを参考にしています。
「アップロード」をクリックすると一旦フォームがmode=upload_imageでサブミットされ、画像がアップロードされます。
同時に$arrFileに値がアサインされ、hiddenインプットのvalueにセットされます。
具体的にはファイルのサーバ上での絶対パス(real_filepath)とドキュメントルートからのURL(filepath)をセットしています。
今回はメールでの送信のみを想定している為、パスは一時保存用のものです。


また、こちらの商品登録フォームから行う場合、不要なものが多いと思い、デフォルトのテンプレートの問い合わせから作成をしております。


エラーメッセージは次の通りになります。
Parse error: syntax error, unexpected '$objPage' (T_VARIABLE), expecting function (T_FUNCTION) in C:\xampp\htdocs\ec-cube\eccube-2.13.3\html\user_data\attach_mail.php on line 208

ソースは次の通りになります。

<?php
require_once '../require.php';
require_once CLASS_EX_REALDIR . 'page_extends/LC_Page_Ex.php';

/**
 * ユーザーカスタマイズ用のページクラス
 *
 * 管理画面から自動生成される
 *
 * @package Page
 */
class LC_Page_User extends LC_Page_Ex
{
    /**
     * Page を初期化する.
     *
     * @return void
     */
    function init()
    {
        parent::init();
    }

    /**
     * Page のプロセス.
     *
     * @return void
     */
    function process()
    {
        parent::process();
        $this->action();
        $this->sendResponse();
    }

    /**
     * Page のアクション.
     *
     * @return void
     */
    function action()
    {
        $objFormParam = new SC_FormParam_Ex();

        $this->arrData = isset($_SESSION['customer']) ? $_SESSION['customer'] : '';

        // アップロードファイル情報の初期化
        $objUpFile = new SC_UploadFile_Ex(IMAGE_TEMP_REALDIR, IMAGE_SAVE_REALDIR);
        $this->lfInitFile($objUpFile);
        $objUpFile->setHiddenFileList($_POST);

        $mode = $this->getMode();
        switch ($mode) {
            case 'confirm':
                // エラーチェック
                $this->lfInitParam($objFormParam);
                $objFormParam->setParam($_POST);
                $objFormParam->convParam();
                $objFormParam->toLower('email');
                $objFormParam->toLower('email02');
                $this->arrErr = $this->lfCheckError($objFormParam);
                // 入力値の取得
                $this->arrForm = $objFormParam->getFormParamList();

                if (SC_Utils_Ex::isBlank($this->arrErr)) {
                    // エラー無しで完了画面
                    $this->tpl_mainpage = 'user_data/attach_mail_confirm.tpl';
                    $this->tpl_title = '添付ファイルメール(確認ページ)';
                }

                break;

            case 'return':
                $this->lfInitParam($objFormParam);
                $objFormParam->setParam($_POST);
                $this->arrForm = $objFormParam->getFormParamList();

                break;

            case 'complete':
                $this->lfInitParam($objFormParam);
                $objFormParam->setParam($_POST);
                $this->arrErr = $objFormParam->checkError();
                $this->arrForm = $objFormParam->getFormParamList();
                if (SC_Utils_Ex::isBlank($this->arrErr)) {
                    $this->lfSendMail($this);

                    // 完了ページへ移動する
                    SC_Response_Ex::sendRedirect('complete.php');
                    SC_Response_Ex::actionExit();
                } else {
                    SC_Utils_Ex::sfDispSiteError(CUSTOMER_ERROR);
                    SC_Response_Ex::actionExit();
                }
                break;

            // 画像のアップロード
            case 'upload_image':
            case 'delete_image':
                // パラメーター初期化
                $this->lfInitParam($objFormParam);
                $objFormParam->setParam($_POST);
                $this->arrErr = $objFormParam->checkError();
                $this->arrForm = $objFormParam->getFormParamList();

                switch ($mode) {
                    case 'upload_image':
                        // ファイルを一時ディレクトリにアップロード
                        $this->arrErr[$this->arrForm['image_key']['value']] = $objUpFile->makeTempFile($this->arrForm['image_key']['value'], IMAGE_RENAME);
                        if ($this->arrErr[$this->arrForm['image_key']['value']] == '') {
                            $img_temp_fullname = $objUpFile->temp_dir.'/'.$objUpFile->temp_file;
                        }
                        break;
                    case 'delete_image':
                        // ファイル削除
                        $this->lfDeleteTempFile($objUpFile, $this->arrForm['image_key']['value']);
                        break;
                    default:
                        break;
                }

                // 入力画面表示設定
                // アップロードファイル情報取得(Hidden用)
                $this->arrHidden = $objUpFile->getHiddenFileList();
                // 画像ファイル表示用データ取得
                $this->arrFile = $objUpFile->getFormFileList(IMAGE_TEMP_URLPATH, IMAGE_SAVE_URLPATH);
                break;

            default:

                break;
    }
}

 public function lfInitParam(&$objFormParam)
    {
        $objFormParam->addParam('テキスト入力', 'some_input', STEXT_LEN, 'KVa', array('EXIST_CHECK','SPTAB_CHECK','MAX_LENGTH_CHECK'));
        

        $objFormParam->addParam('sample_image', 'sample_image', '', '', array());
        $objFormParam->addParam('image_key', 'image_key', '', '', array());
        $objFormParam->addParam('sample_image_realpath', 'sample_image_realpath', '', '', array());
        $objFormParam->addParam('sample_image_urlpath', 'sample_image_urlpath', '', '', array());
    }

 public function lfInitFile(&$objUpFile)
    {
        $objUpFile->addFile('画像', 'sample_image', array('jpg', 'gif', 'png'), IMAGE_SIZE, false, SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT);
    }

public function lfDeleteTempFile(&$objUpFile, $image_key)
    {
        $arrTempFile = $objUpFile->temp_file;
        $arrKeyName = $objUpFile->keyname;

        foreach ($arrKeyName as $key => $keyname) {
            if ($keyname != $image_key) continue;

            if (!empty($arrTempFile[$key])) {
                $temp_file = $arrTempFile[$key];
                $arrTempFile[$key] = '';

                if (!in_array($temp_file, $arrTempFile)) {
                    $objUpFile->deleteFile($image_key);
                } else {
                    $objUpFile->temp_file[$key] = '';
                    $objUpFile->save_file[$key] = '';
                }
            } else {
                $objUpFile->temp_file[$key] = '';
                $objUpFile->save_file[$key] = '';
            }
        }
    }

 public function lfCheckError(&$objFormParam)
    {
        // 入力データを渡す。
        $arrForm =  $objFormParam->getHashArray();
        $objErr = new SC_CheckError_Ex($arrForm);
        $objErr->arrErr = $objFormParam->checkError();
        $objErr->doFunc(array('メールアドレス', 'メールアドレス(確認)', 'email', 'email02') ,array('EQUAL_CHECK'));

        return $objErr->arrErr;
    }

public function lfSendMail(&$objPage)
    {
        $CONF = SC_Helper_DB_Ex::sfGetBasisData();
        $objPage->tpl_shopname = $CONF['shop_name'];
        $objPage->tpl_infoemail = $CONF['email02'];
        $attachment = $objPage->arrForm['sample_image_realpath']['value'];
        $helperMail = new SC_Helper_Mail_Ex();
        $helperMail->setPage($this);
        $helperMail->sfSendTemplateMail(
            $objPage->arrForm['email']['value'],            // to
            $objPage->arrForm['name01']['value'] .' 様',    // to_name
            6,                                              // template_id
            $objPage,                                       // objPage
            $CONF['email03'],                               // from_address
            $CONF['shop_name'],                             // from_name
            $CONF['email02'],                               // reply_to
            $CONF['email02'],                               // bcc
            $attachment                                     // attachment
        );
    }

$objPage = new LC_Page_User();エラー箇所
$objPage->init();
$objPage->process();


------------------------------------------------------------------------------------------
[EC-CUBE] 2.13.3
[レンタルサーバ] WADAX
[OS] CentOS 6
[PHP] 5.3系
[データベース] MySQL 5.1系
[WEBサーバ] 2.2系
[カスタマイズの有無]] 既存のテンプレートからの作成のため、カスタマイズはしておりません。
[現象] 投稿フォームにエラーが出る
------------------------------------------------------------------------------------------
yuh
投稿日時: 2015/9/24 18:02
対応状況: −−−
登録日: 2013/1/9
居住地: 大阪
投稿: 1818
Re: 問い合わせフォームに画像添付機能を追加
$objPage = new LC_Page_User();




}
$objPage = new LC_Page_User();

に変更してください。
classが閉じられてないのが原因です。
mikami
投稿日時: 2015/9/25 10:12
対応状況: −−−
半人前
登録日: 2015/9/24
居住地:
投稿: 16
Re: 問い合わせフォームに画像添付機能を追加
yuh様

お忙しいところ対応ありがとうございます。

ページが表示されるようになりました。
しかし、フォームのカスタマイズでエラーを吐いています。

エラー内容は「システムエラーが発生しました。
大変お手数ですが、サイト管理者までご連絡ください。」と表示され、特定することができておりません。

EC-CUBE内の「デザイン管理」の「ページ詳細設定」の該当するページの箇所になります。
基本的にテンプレートの問い合わせ画面を元に付け加えております。
コードは下記の通りになります。


http://al-lucky.hatenablog.com/entry/2014/09/17/133220

こちらのページの「フォームのカスタマイズ」に当たります。


<div id="undercolumn">
    <h2 class="title"><!--{$tpl_title|h}--></h2>

    <div id="undercolumn_contact">

        <p>内容によっては回答をさしあげるのにお時間をいただくこともございます。<br />
        また、休業日は翌営業日以降の対応となりますのでご了承ください。</p>

        <form name="form1" id="form1" method="post" action="?">
            <input type="hidden" name="<!--{$smarty.const.TRANSACTION_ID_NAME}-->" enctype="multipart/form-data" value="<!--{$transactionid}-->" />
            <input type="hidden" name="sample_image_realpath" value="<!--{$arrFile.sample_image.real_filepath}-->" />
            <input type="hidden" name="sample_image_urlpath" value="<!--{$arrFile.sample_image.filepath}-->" />
            <input type="hidden" name="mode" value="confirm" />

            <table summary="お問い合わせ">
                <tr>
                    <th>お名前<span class="attention">※</span></th>
                    <td>
                        <span class="attention"><!--{$arrErr.name01}--><!--{$arrErr.name02}--></span>
                        姓&nbsp;<input type="text" class="box120" name="name01" value="<!--{$arrForm.name01.value|default:$arrData.name01|h}-->" maxlength="<!--{$smarty.const.STEXT_LEN}-->" style="<!--{$arrErr.name01|sfGetErrorColor}-->; ime-mode: active;" /> 
                        名&nbsp;<input type="text" class="box120" name="name02" value="<!--{$arrForm.name02.value|default:$arrData.name02|h}-->" maxlength="<!--{$smarty.const.STEXT_LEN}-->" style="<!--{$arrErr.name02|sfGetErrorColor}-->; ime-mode: active;" />
                    </td>
                </tr>
                <tr>
                    <th>お名前(フリガナ)<span class="attention">※</span></th>
                    <td>
                        <span class="attention"><!--{$arrErr.kana01}--><!--{$arrErr.kana02}--></span>
                        セイ&nbsp;<input type="text" class="box120" name="kana01" value="<!--{$arrForm.kana01.value|default:$arrData.kana01|h}-->" maxlength="<!--{$smarty.const.STEXT_LEN}-->" style="<!--{$arrErr.kana01|sfGetErrorColor}-->; ime-mode: active;" /> 
                        メイ&nbsp;<input type="text" class="box120" name="kana02" value="<!--{$arrForm.kana02.value|default:$arrData.kana02|h}-->" maxlength="<!--{$smarty.const.STEXT_LEN}-->" style="<!--{$arrErr.kana02|sfGetErrorColor}-->; ime-mode: active;" />
                    </td>
                </tr>
                <tr>
                    <th>郵便番号</th>
                    <td>
                        <span class="attention"><!--{$arrErr.zip01}--><!--{$arrErr.zip02}--></span>
                        <p class="top">
                            〒&nbsp;
                            <input type="text" name="zip01" class="box60" value="<!--{$arrForm.zip01.value|default:$arrData.zip01|h}-->" maxlength="<!--{$smarty.const.ZIP01_LEN}-->" style="<!--{$arrErr.zip01|sfGetErrorColor}-->; ime-mode: disabled;" />&nbsp;-&nbsp;
                            <input type="text" name="zip02" class="box60" value="<!--{$arrForm.zip02.value|default:$arrData.zip02|h}-->" maxlength="<!--{$smarty.const.ZIP02_LEN}-->" style="<!--{$arrErr.zip02|sfGetErrorColor}-->; ime-mode: disabled;" /> 
                            <a href="http://search.post.japanpost.jp/zipcode/" target="_blank"><span class="mini">郵便番号検索</span></a>
                        </p>
                        <p class="zipimg">
                            <a href="java script:eccube.getAddress('<!--{$smarty.const.INPUT_ZIP_URLPATH}-->', 'zip01', 'zip02', 'pref', 'addr01');">
                                <img src="<!--{$TPL_URLPATH}-->img/button/btn_address_input.jpg" alt="住所自動入力" /></a>
                            <span class="mini">&nbsp;郵便番号を入力後、クリックしてください。</span>
                        </p>
                    </td>
                </tr>
                <tr>
                    <th>住所</th>
                    <td>
                        <span class="attention"><!--{$arrErr.pref}--><!--{$arrErr.addr01}--><!--{$arrErr.addr02}--></span>

                        <select name="pref" style="<!--{$arrErr.pref|sfGetErrorColor}-->">
                        <option value="">都道府県を選択</option><!--{html_options options=$arrPref selected=$arrForm.pref.value|default:$arrData.pref|h}--></select>

                        <p>
                            <input type="text" class="box380" name="addr01" value="<!--{$arrForm.addr01.value|default:$arrData.addr01|h}-->" style="<!--{$arrErr.addr01|sfGetErrorColor}-->; ime-mode: active;" /><br />
                            <!--{$smarty.const.SAMPLE_ADDRESS1}-->
                        </p>

                        <p>
                            <input type="text" class="box380" name="addr02" value="<!--{$arrForm.addr02.value|default:$arrData.addr02|h}-->" style="<!--{$arrErr.addr02|sfGetErrorColor}-->; ime-mode: active;" /><br />
                            <!--{$smarty.const.SAMPLE_ADDRESS2}-->
                        </p>

                        <p class="mini"><span class="attention">住所は2つに分けてご記入ください。マンション名は必ず記入してください。</span></p>
                    </td>
                </tr>
                <tr>
                    <th>電話番号</th>
                    <td>
                        <span class="attention"><!--{$arrErr.tel01}--><!--{$arrErr.tel02}--><!--{$arrErr.tel03}--></span>
                        <input type="text" class="box60" name="tel01" value="<!--{$arrForm.tel01.value|default:$arrData.tel01|h}-->" maxlength="<!--{$smarty.const.TEL_ITEM_LEN}-->" style="<!--{$arrErr.tel01|sfGetErrorColor}-->; ime-mode: disabled;" />&nbsp;-&nbsp;
                        <input type="text" class="box60" name="tel02" value="<!--{$arrForm.tel02.value|default:$arrData.tel02|h}-->" maxlength="<!--{$smarty.const.TEL_ITEM_LEN}-->" style="<!--{$arrErr.tel02|sfGetErrorColor}-->; ime-mode: disabled;" />&nbsp;-&nbsp;
                        <input type="text" class="box60" name="tel03" value="<!--{$arrForm.tel03.value|default:$arrData.tel03|h}-->" maxlength="<!--{$smarty.const.TEL_ITEM_LEN}-->" style="<!--{$arrErr.tel03|sfGetErrorColor}-->; ime-mode: disabled;" />
                    </td>
                </tr>
                <tr>
                    <th>メールアドレス<span class="attention">※</span></th>
                    <td>
                        <span class="attention"><!--{$arrErr.email}--><!--{$arrErr.email02}--></span>
                        <input type="text" class="box380 top" name="email" value="<!--{$arrForm.email.value|default:$arrData.email|h}-->" style="<!--{$arrErr.email|sfGetErrorColor}-->; ime-mode: disabled;" /><br />
                        <!--{* ログインしていれば入力済みにする *}-->
                        <!--{if $smarty.session.customer}-->
                        <!--{assign var=email02 value=$arrData.email}-->
                        <!--{/if}-->
                        <input type="text" class="box380" name="email02" value="<!--{$arrForm.email02.value|default:$email02|h}-->" style="<!--{$arrErr.email02|sfGetErrorColor}-->; ime-mode: disabled;" /><br />
                        <p class="mini"><span class="attention">確認のため2度入力してください。</span></p>
                    </td>
                </tr>
                <tr>
                    <th>お問い合わせ内容<span class="attention">※</span><br />
                    <span class="mini">(全角<!--{$smarty.const.MLTEXT_LEN}-->字以下)</span></th>
                    <td>
                        <span class="attention"><!--{$arrErr.contents}--></span>
                        <textarea name="contents" class="box380" cols="60" rows="20" style="<!--{$arrErr.contents.value|h|sfGetErrorColor}-->; ime-mode: active;"><!--{"\n"}--><!--{$arrForm.contents.value|h}--></textarea>
                        <p class="mini attention">※ご注文に関するお問い合わせには、必ず「ご注文番号」をご記入くださいますようお願いいたします。</p>
                    </td>
                </tr>
                <tr>※ここから下を追記しております。
                    <th>画像添付<span class="entry-error"><!--{$arrErr.sample_image}--></span><br />
                    </th>
                    <td>
                        <!--{if $arrFile.sample_image.filepath != ""}-->
                        <img src="<!--{$arrFile.sample_image.filepath}-->" alt="">
                        <a href="" onclick="eccube.setModeAndSubmit('delete_image', 'image_key', 'sample_image'); return false;">
                            [画像の取り消し]
                        </a>
                    <!--{else}-->
                        <input type="file" name="sample_image" style="<!--{$arrErr.sample_image|sfGetErrorColor}-->" />
                        <a class="btn-normal" href="java script:;" name="btn" onclick="eccube.setModeAndSubmit('upload_image', 'image_key', 'sample_image'); return false;">
                            アップロード
                        </a>
                        <!--{/if}-->
                      <p class="mini entry-error">画像を添付出来ます。(jpg/gif/png)</p>
                    </td>
                </tr>※ここまで
            </table>

            <div class="btn_area">
                <ul>
                    <li>
                        <input type="image" class="hover_change_image" src="<!--{$TPL_URLPATH}-->img/button/btn_confirm.jpg" alt="確認ページへ" name="confirm" />
                    </li>
                </ul>
            </div>

        </form>
    </div>
</div>
yuh
投稿日時: 2015/9/25 10:27
対応状況: −−−
登録日: 2013/1/9
居住地: 大阪
投稿: 1818
Re: 問い合わせフォームに画像添付機能を追加
エラーログを確認してください。
mikami
投稿日時: 2015/9/25 11:09
対応状況: −−−
半人前
登録日: 2015/9/24
居住地:
投稿: 16
Re: 問い合わせフォームに画像添付機能を追加
エラーログの確認ができました。
こういう機能があることを知らなかったので、ありがとうございます。

エラー内容は下記の通りでした。

Fatal error(E_USER_ERROR): Smarty error: [in C:/xampp/htdocs/ec-cube/eccube-2.13.3/html/../data/Smarty/templates/default/user_data/attach_mail.tpl line 145]: syntax error: unclosed tag \{else} (opened line 132). (Smarty_Compiler.class.php, line 317) on [C:\xampp\htdocs\ec-cube\eccube-2.13.3\data\module\Smarty\libs\Smarty.class.php(1094)] from ::1
customer_id =
C:\xampp\htdocs\ec-cube\eccube-2.13.3\html\user_data\attach_mail.php(211): LC_Page_User->process
C:\xampp\htdocs\ec-cube\eccube-2.13.3\html\user_data\attach_mail.php(33): LC_Page->sendResponse
C:\xampp\htdocs\ec-cube\eccube-2.13.3\data\class\pages\LC_Page.php(155): SC_Display->prepare
C:\xampp\htdocs\ec-cube\eccube-2.13.3\data\class\SC_Display.php(80): SC_View->getResponse
C:\xampp\htdocs\ec-cube\eccube-2.13.3\data\class\SC_View.php(105): Smarty->fetch
C:\xampp\htdocs\ec-cube\eccube-2.13.3\data\module\Smarty\libs\Smarty.class.php(1264): include
C:\xampp\htdocs\ec-cube\eccube-2.13.3\data\Smarty\templates_c\default\%%F1^F15^F158E3F4%%site_frame.tpl.php(98): Smarty->_smarty_include
C:\xampp\htdocs\ec-cube\eccube-2.13.3\data\module\Smarty\libs\Smarty.class.php(1870): include
C:\xampp\htdocs\ec-cube\eccube-2.13.3\data\Smarty\templates_c\default\%%58^587^5876E692%%site_main.tpl.php(39): Smarty->_smarty_include
C:\xampp\htdocs\ec-cube\eccube-2.13.3\data\module\Smarty\libs\Smarty.class.php(1868): Smarty->_compile_resource
C:\xampp\htdocs\ec-cube\eccube-2.13.3\data\module\Smarty\libs\Smarty.class.php(1423): Smarty->_compile_source
C:\xampp\htdocs\ec-cube\eccube-2.13.3\data\module\Smarty\libs\Smarty.class.php(1490): Smarty_Compiler->_compile_file
C:\xampp\htdocs\ec-cube\eccube-2.13.3\data\module\Smarty\libs\Smarty_Compiler.class.php(317): Smarty_Compiler->_syntax_error
C:\xampp\htdocs\ec-cube\eccube-2.13.3\data\module\Smarty\libs\Smarty_Compiler.class.php(2256): Smarty->_trigger_fatal_error
C:\xampp\htdocs\ec-cube\eccube-2.13.3\data\module\Smarty\libs\Smarty.class.php(1816): Smarty->trigger_error
C:\xampp\htdocs\ec-cube\eccube-2.13.3\data\module\Smarty\libs\Smarty.class.php(1094): trigger_error
yuh
投稿日時: 2015/9/25 11:20
対応状況: −−−
登録日: 2013/1/9
居住地: 大阪
投稿: 1818
Re: 問い合わせフォームに画像添付機能を追加
../data/Smarty/templates/default/user_data/attach_mail.tpl line 145]: syntax error: unclosed tag \{else} (opened line 132).

ifのタグが閉じられてないのが原因だそうです。
mikami
投稿日時: 2015/9/25 11:36
対応状況: −−−
半人前
登録日: 2015/9/24
居住地:
投稿: 16
Re: 問い合わせフォームに画像添付機能を追加
yuh様

ありがとうございます。
単純なエラーだったんですね。
無事に表示されました。
また、エラーログの見方が少しわかりました。
後は送信されるかということなので、実験してみます。

また、何か疑問が出てきたら連絡しますので、何卒宜しくお願いします。
mikami
投稿日時: 2015/9/29 10:42
対応状況: −−−
半人前
登録日: 2015/9/24
居住地:
投稿: 16
Re: 問い合わせフォームに画像添付機能を追加
yuh様

お世話になっております。

引用:
これで、基本的には問合せと同じフローで添付ファイルつきのメールが送信できます。
1. index.tplで入力。mode=confirmでサブミット。
2. confirm.tplで内容確認。mode=completeでサブミット。
-- メール送信処理 --
3. complete.tplで完了画面表示


こちらの記述でどこのフォルダに記述するのかがわかりませんでした。

新たにcomplete.phpは作成しましたが、

    $this->tpl_mainpage = 'user_data/attach_mail_confirm.tpl';


ここの部分の記述場所と内容がわかりませんでした。


function action()
    {
        $objFormParam = new SC_FormParam_Ex();

        $this->arrData = isset($_SESSION['customer']) ? $_SESSION['customer'] : '';

        // アップロードファイル情報の初期化
        $objUpFile = new SC_UploadFile_Ex(IMAGE_TEMP_REALDIR, IMAGE_SAVE_REALDIR);
        $this->lfInitFile($objUpFile);
        $objUpFile->setHiddenFileList($_POST);

        $mode = $this->getMode();
        switch ($mode) {
            case 'confirm':
                // エラーチェック
                $this->lfInitParam($objFormParam);
                $objFormParam->setParam($_POST);
                $objFormParam->convParam();
                $objFormParam->toLower('email');
                $objFormParam->toLower('email02');
                $this->arrErr = $this->lfCheckError($objFormParam);
                // 入力値の取得
                $this->arrForm = $objFormParam->getFormParamList();

                if (SC_Utils_Ex::isBlank($this->arrErr)) {
                    // エラー無しで完了画面
                    $this->tpl_mainpage = 'user_data/attach_mail_confirm.tpl';
                    $this->tpl_title = '添付ファイルメール(確認ページ)';
                }

                break;

            case 'return':
                $this->lfInitParam($objFormParam);
                $objFormParam->setParam($_POST);
                $this->arrForm = $objFormParam->getFormParamList();

                break;

            case 'complete':
                $this->lfInitParam($objFormParam);
                $objFormParam->setParam($_POST);
                $this->arrErr = $objFormParam->checkError();
                $this->arrForm = $objFormParam->getFormParamList();
                if (SC_Utils_Ex::isBlank($this->arrErr)) {
                    $this->lfSendMail($this);

                    // 完了ページへ移動する
                    SC_Response_Ex::sendRedirect('complete.php');
                    SC_Response_Ex::actionExit();
                } else {
                    SC_Utils_Ex::sfDispSiteError(CUSTOMER_ERROR);
                    SC_Response_Ex::actionExit();
                }
                break;

            // 画像のアップロード
            case 'upload_image':
            case 'delete_image':
                // パラメーター初期化
                $this->lfInitParam($objFormParam);
                $objFormParam->setParam($_POST);
                $this->arrErr = $objFormParam->checkError();
                $this->arrForm = $objFormParam->getFormParamList();

                switch ($mode) {
                    case 'upload_image':
                        // ファイルを一時ディレクトリにアップロード
                        $this->arrErr[$this->arrForm['image_key']['value']] = $objUpFile->makeTempFile($this->arrForm['image_key']['value'], IMAGE_RENAME);
                        if ($this->arrErr[$this->arrForm['image_key']['value']] == '') {
                            $img_temp_fullname = $objUpFile->temp_dir.'/'.$objUpFile->temp_file;
                        }
                        break;
                    case 'delete_image':
                        // ファイル削除
                        $this->lfDeleteTempFile($objUpFile, $this->arrForm['image_key']['value']);
                        break;
                    default:
                        break;
                }

                // 入力画面表示設定
                // アップロードファイル情報取得(Hidden用)
                $this->arrHidden = $objUpFile->getHiddenFileList();
                // 画像ファイル表示用データ取得
                $this->arrFile = $objUpFile->getFormFileList(IMAGE_TEMP_URLPATH, IMAGE_SAVE_URLPATH);
                break;

            default:

                break;
        }
    }
mikami
投稿日時: 2015/9/29 11:21
対応状況: −−−
半人前
登録日: 2015/9/24
居住地:
投稿: 16
Re: 問い合わせフォームに画像添付機能を追加
yuh様

自己解決しました。

引用:
これで、基本的には問合せと同じフローで添付ファイルつきのメールが送信できます。
1. index.tplで入力。mode=confirmでサブミット。
2. confirm.tplで内容確認。mode=completeでサブミット。
-- メール送信処理 --
3. complete.tplで完了画面表示


1. index.tplで入力。mode=confirmでサブミット
→Smarty/templates/default/user_data/attach_mail.tpl
を作成した部分
2. confirm.tplで内容確認。mode=completeでサブミット。
→Smarty/templates/default/user_data/attach_mail_confirm.tpl
を作成した部分
3.complete.tplで完了画面表示
→Smarty/templates/default/user_data/complete.tpl
新規にページ詳細から作成した部分

こういうことだと判断して、問い合わせメールと同様の内容をconfirm.tplにコピーしました。

ただし、フォームの送信をしても画面遷移されません。
attachi_mail.phpの記述が下記のようになっておりますが、原因となる場所がわかりませんでした。

<!--{*
 * This file is part of EC-CUBE
 *
 * Copyright(c) 2000-2014 LOCKON CO.,LTD. All Rights Reserved.
 *
 * http://www.lockon.co.jp/
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 *}-->

<div id="undercolumn">
    <h2 class="title"><!--{$tpl_title|h}--></h2>

    <div id="undercolumn_contact">

        <p>内容によっては回答をさしあげるのにお時間をいただくこともございます。<br />
        また、休業日は翌営業日以降の対応となりますのでご了承ください。</p>

        <form name="form1" id="form1" method="post" action="?">
            <input type="hidden" name="<!--{$smarty.const.TRANSACTION_ID_NAME}-->" enctype="multipart/form-data" value="<!--{$transactionid}-->" />
            <input type="hidden" name="sample_image_realpath" value="<!--{$arrFile.sample_image.real_filepath}-->" />
            <input type="hidden" name="sample_image_urlpath" value="<!--{$arrFile.sample_image.filepath}-->" />
            <input type="hidden" name="mode" value="confirm" />

            <table summary="お問い合わせ">
                <tr>
                    <th>お名前<span class="attention">※</span></th>
                    <td>
                        <span class="attention"><!--{$arrErr.name01}--><!--{$arrErr.name02}--></span>
                        姓&nbsp;<input type="text" class="box120" name="name01" value="<!--{$arrForm.name01.value|default:$arrData.name01|h}-->" maxlength="<!--{$smarty.const.STEXT_LEN}-->" style="<!--{$arrErr.name01|sfGetErrorColor}-->; ime-mode: active;" /> 
                        名&nbsp;<input type="text" class="box120" name="name02" value="<!--{$arrForm.name02.value|default:$arrData.name02|h}-->" maxlength="<!--{$smarty.const.STEXT_LEN}-->" style="<!--{$arrErr.name02|sfGetErrorColor}-->; ime-mode: active;" />
                    </td>
                </tr>
                <tr>
                    <th>お名前(フリガナ)<span class="attention">※</span></th>
                    <td>
                        <span class="attention"><!--{$arrErr.kana01}--><!--{$arrErr.kana02}--></span>
                        セイ&nbsp;<input type="text" class="box120" name="kana01" value="<!--{$arrForm.kana01.value|default:$arrData.kana01|h}-->" maxlength="<!--{$smarty.const.STEXT_LEN}-->" style="<!--{$arrErr.kana01|sfGetErrorColor}-->; ime-mode: active;" /> 
                        メイ&nbsp;<input type="text" class="box120" name="kana02" value="<!--{$arrForm.kana02.value|default:$arrData.kana02|h}-->" maxlength="<!--{$smarty.const.STEXT_LEN}-->" style="<!--{$arrErr.kana02|sfGetErrorColor}-->; ime-mode: active;" />
                    </td>
                </tr>
                <tr>
                    <th>郵便番号</th>
                    <td>
                        <span class="attention"><!--{$arrErr.zip01}--><!--{$arrErr.zip02}--></span>
                        <p class="top">
                            〒&nbsp;
                            <input type="text" name="zip01" class="box60" value="<!--{$arrForm.zip01.value|default:$arrData.zip01|h}-->" maxlength="<!--{$smarty.const.ZIP01_LEN}-->" style="<!--{$arrErr.zip01|sfGetErrorColor}-->; ime-mode: disabled;" />&nbsp;-&nbsp;
                            <input type="text" name="zip02" class="box60" value="<!--{$arrForm.zip02.value|default:$arrData.zip02|h}-->" maxlength="<!--{$smarty.const.ZIP02_LEN}-->" style="<!--{$arrErr.zip02|sfGetErrorColor}-->; ime-mode: disabled;" /> 
                            <a href="http://search.post.japanpost.jp/zipcode/" target="_blank"><span class="mini">郵便番号検索</span></a>
                        </p>
                        <p class="zipimg">
                            <a href="java script:eccube.getAddress('<!--{$smarty.const.INPUT_ZIP_URLPATH}-->', 'zip01', 'zip02', 'pref', 'addr01');">
                                <img src="<!--{$TPL_URLPATH}-->img/button/btn_address_input.jpg" alt="住所自動入力" /></a>
                            <span class="mini">&nbsp;郵便番号を入力後、クリックしてください。</span>
                        </p>
                    </td>
                </tr>
                <tr>
                    <th>住所</th>
                    <td>
                        <span class="attention"><!--{$arrErr.pref}--><!--{$arrErr.addr01}--><!--{$arrErr.addr02}--></span>

                        <select name="pref" style="<!--{$arrErr.pref|sfGetErrorColor}-->">
                        <option value="">都道府県を選択</option><!--{html_options options=$arrPref selected=$arrForm.pref.value|default:$arrData.pref|h}--></select>

                        <p>
                            <input type="text" class="box380" name="addr01" value="<!--{$arrForm.addr01.value|default:$arrData.addr01|h}-->" style="<!--{$arrErr.addr01|sfGetErrorColor}-->; ime-mode: active;" /><br />
                            <!--{$smarty.const.SAMPLE_ADDRESS1}-->
                        </p>

                        <p>
                            <input type="text" class="box380" name="addr02" value="<!--{$arrForm.addr02.value|default:$arrData.addr02|h}-->" style="<!--{$arrErr.addr02|sfGetErrorColor}-->; ime-mode: active;" /><br />
                            <!--{$smarty.const.SAMPLE_ADDRESS2}-->
                        </p>

                        <p class="mini"><span class="attention">住所は2つに分けてご記入ください。マンション名は必ず記入してください。</span></p>
                    </td>
                </tr>
                <tr>
                    <th>電話番号</th>
                    <td>
                        <span class="attention"><!--{$arrErr.tel01}--><!--{$arrErr.tel02}--><!--{$arrErr.tel03}--></span>
                        <input type="text" class="box60" name="tel01" value="<!--{$arrForm.tel01.value|default:$arrData.tel01|h}-->" maxlength="<!--{$smarty.const.TEL_ITEM_LEN}-->" style="<!--{$arrErr.tel01|sfGetErrorColor}-->; ime-mode: disabled;" />&nbsp;-&nbsp;
                        <input type="text" class="box60" name="tel02" value="<!--{$arrForm.tel02.value|default:$arrData.tel02|h}-->" maxlength="<!--{$smarty.const.TEL_ITEM_LEN}-->" style="<!--{$arrErr.tel02|sfGetErrorColor}-->; ime-mode: disabled;" />&nbsp;-&nbsp;
                        <input type="text" class="box60" name="tel03" value="<!--{$arrForm.tel03.value|default:$arrData.tel03|h}-->" maxlength="<!--{$smarty.const.TEL_ITEM_LEN}-->" style="<!--{$arrErr.tel03|sfGetErrorColor}-->; ime-mode: disabled;" />
                    </td>
                </tr>
                <tr>
                    <th>メールアドレス<span class="attention">※</span></th>
                    <td>
                        <span class="attention"><!--{$arrErr.email}--><!--{$arrErr.email02}--></span>
                        <input type="text" class="box380 top" name="email" value="<!--{$arrForm.email.value|default:$arrData.email|h}-->" style="<!--{$arrErr.email|sfGetErrorColor}-->; ime-mode: disabled;" /><br />
                        <!--{* ログインしていれば入力済みにする *}-->
                        <!--{if $smarty.session.customer}-->
                        <!--{assign var=email02 value=$arrData.email}-->
                        <!--{/if}-->
                        <input type="text" class="box380" name="email02" value="<!--{$arrForm.email02.value|default:$email02|h}-->" style="<!--{$arrErr.email02|sfGetErrorColor}-->; ime-mode: disabled;" /><br />
                        <p class="mini"><span class="attention">確認のため2度入力してください。</span></p>
                    </td>
                </tr>
                <tr>
                    <th>お問い合わせ内容<span class="attention">※</span><br />
                    <span class="mini">(全角<!--{$smarty.const.MLTEXT_LEN}-->字以下)</span></th>
                    <td>
                        <span class="attention"><!--{$arrErr.contents}--></span>
                        <textarea name="contents" class="box380" cols="60" rows="20" style="<!--{$arrErr.contents.value|h|sfGetErrorColor}-->; ime-mode: active;"><!--{"\n"}--><!--{$arrForm.contents.value|h}--></textarea>
                        <p class="mini attention">※ご注文に関するお問い合わせには、必ず「ご注文番号」をご記入くださいますようお願いいたします。</p>
                    </td>
                </tr>
                <tr>
                    <th>画像添付<span class="entry-error"><!--{$arrErr.sample_image}--></span><br />
                    </th>
                    <td>
                        <!--{if $arrFile.sample_image.filepath != ""}-->
                        <img src="<!--{$arrFile.sample_image.filepath}-->" alt="">
                        <a href="" onclick="eccube.setModeAndSubmit('delete_image', 'image_key', 'sample_image'); return false;">
                            [画像の取り消し]
                        </a>
                    <!--{else}-->
                        <input type="file" name="sample_image" style="<!--{$arrErr.sample_image|sfGetErrorColor}-->" />
                        <a class="btn-normal" href="java script:;" name="btn" onclick="eccube.setModeAndSubmit('upload_image', 'image_key', 'sample_image'); return false;">
                            アップロード
                        </a>
                      <p class="mini entry-error">画像を添付出来ます。(jpg/gif/png)</p>
                    <!--{/if}-->
                    </td>
                </tr>
            </table>

            <div class="btn_area">
                <ul>
                    <li>
                        <input type="image" class="hover_change_image" src="<!--{$TPL_URLPATH}-->img/button/btn_confirm.jpg" alt="確認ページへ" name="confirm" />
                    </li>
                </ul>
            </div>

        </form>
    </div>
</div>
flealog
投稿日時: 2015/10/1 18:43
対応状況: −−−
仙人
登録日: 2008/6/10
居住地:
投稿: 485
Re: 問い合わせフォームに画像添付機能を追加
ソースコードの不具合か所の判定はできませんが、この記事を参考にお問い合わせに添付ファイルをやってみましたが、最終的に添付はできたのですが、本文の文字化けが直せずあきらめました。

あ、もしかしたら

<input type="hidden" name="image_key" value="" />

を追加したら遷移するかもしれません。


----------------
EC-CUBE3っぽいテンプレート
GitHub で公開中
https://github.com/bluestylejp

お問い合わせ番号CSV登録&メール送信プラグイン
http://urx.red/qDT6

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


 



ログイン


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

統計情報

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

投稿数ランキング

1
seasoft
7365
2
468
3217
3
AMUAMU
2712
4
nanasess
2303
5
umebius
2085
6
yuh
1818
7
h_tanaka
1610
8
red
1568
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.