現在、問い合わせフォームに画像添付機能を追加しようとしております。
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系
[カスタマイズの有無]] 既存のテンプレートからの作成のため、カスタマイズはしておりません。
[現象] 投稿フォームにエラーが出る
------------------------------------------------------------------------------------------