質問 > 管理機能 > 管理機能>メーカー登録 に画像アップロード機能を追加したい |
管理機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
beginner14 |
投稿日時: 2014/5/25 22:51
対応状況: −−−
|
半人前 登録日: 2014/5/17 居住地: 投稿: 11 |
管理機能>メーカー登録 に画像アップロード機能を追加したい いつもお世話になっております。
大変お手数ですが、下記のご質問についてご存じな方がいらっしゃいましたら 何かご教示頂くことはできませんでしょうか。 難しく複雑なコードですので、ご教示頂くことは難しいかと思いましたが ご質問させて頂きました。 【目的】 管理機能>メーカー登録 に画像アップロード機能を追加したい 【状況】 data/class/pages/admin/products/LC_Page_Admin_Maker.phpを 2.12.6のデフォルトであるdata/class/pages/admin/products/LC_Page_Admin_Products_Product.phpの 真似をしてカスタマイズすることを考えましたが、コードが複雑でどこを合わせ込めばうまく動作するのか がよくわかりませんでした。 過去スレッドの”新着情報管理に画像アップロード機能を追加し、アップロードした画像を表示させる” と同類のものを確認しましたが解決しませんでした。他に参考にできるような資料も見つけられておりません。 【ご質問】 ※admin/products/LC_Page_Admin_Products_Product.php → admin/products/LC_Page_Admin_Maker.phpへ 置き換えることを前提としてのご質問でございます。 ?商品登録の場合は、product_idを元に商品と画像を関連させるようなコードがあるかと思いましたので これをメーカー登録に置き換えるにはproduct_id → Maker_idに置き換えることが必要かと考えました。 全ての変数を product_id → Maker_idに置き換えても宜しいものでしょうか? (例) // メーカーID取得 $Maker_id= $objFormParam->getValue('Maker_id); // メーカーデータ取得 $arrForm = $this->lfGetFormParam_PreEdit($objUpFile, $objDownFile, $Maker_id); ?dtb_Makerにimgというカラムを作りました。 Admin_Products_Product.phpコード内でdtb_productsのmain_image(商品詳細の画像) が使用されている箇所をimgに置き換える という考えで宜しいものでしょうか? ?function action()内でswitch ($mode)の条件分岐は下記の2つさえあればよいものでしょうか? case 'upload_image': case 'delete_image': ?”メーカー登録に画像アップロード機能の追加”のみの場合、元コードAdmin_Products_Product.php には使用しない関数も出てくるのでしょうか。 パラメーター情報の初期化などいろいろな関数がありますが、動作に必要な関数や追加で必要な関数など 教えて頂けませんでしょうか。 以上ご確認のほどよろしくお願いいたします。 ------------------------------------------------------------------------------------------ [EC-CUBE] 2.12.2 [レンタルサーバ] ロリポップ [OS] widows7 [PHP] PHP 5.3.28 [データベース] MySQL 5.5.35 [WEBサーバ] apache2.2.26 [ブラウザ] Firefox2.0.0.5 googlechrome34.0.1847.137 ------------------------------------------------------------------------------------------ |
AMUAMU |
投稿日時: 2014/5/27 17:02
対応状況: −−−
|
神 登録日: 2009/5/2 居住地: 東京都 投稿: 2712 |
Re: 管理機能>メーカー登録 に画像アップロード機能を追加したい >※admin/products/LC_Page_Admin_Products_Product.php → admin/products/LC_Page_Admin_Maker.phpへ置き換えることを前提としてのご質問でございます。
シンプルに画像をアップロードするカスタマイズをするだけであればLC_Page_Admin_Products_Productは複雑なので、 支払い方法編集画面(LC_Page_Admin_Basis_PaymentInput)あたりを元にしたほうが良いと思います。
|
beginner14 |
投稿日時: 2014/5/28 1:40
対応状況: 開発中
|
半人前 登録日: 2014/5/17 居住地: 投稿: 11 |
Re: 管理機能>メーカー登録 に画像アップロード機能を追加したい AMUAMU様
お世話になっております。 貴重なアドバイスを頂きまして誠にありがとうございます。 仰る通りで、シンプルに画像をアップロードするカスタマイズをするだけでございます。 早速、PaymentInputを真似してmakerをカスタマイズしてみましたところ、 画像のアップロードボタンを押すと画像は表示されるようになりましたが、 DBへの登録がうまくできませんでした。 大変恐縮ですが、もし宜しければうまく動作するようなアドバイスを頂くことはできませんでしょうか。 何卒よろしくお願いいたします。 下記のようにmaker.phpとテンプレートを変更しました。 admin/products/LC_Page_Admin_Products_Maker.php <?php require_once CLASS_EX_REALDIR . 'page_extends/admin/LC_Page_Admin_Ex.php'; class LC_Page_Admin_Products_Maker extends LC_Page_Admin_Ex { var $objUpFile; function init() { parent::init(); $this->tpl_mainpage = 'products/maker.tpl'; $this->tpl_subno = 'maker'; $this->tpl_maintitle = '商品管理'; $this->tpl_subtitle = 'メーカー登録'; $this->tpl_mainno = 'products'; } function process() { $this->action(); $this->sendResponse(); } function action() { $objFormParam = new SC_FormParam_Ex(); $mode = $this->getMode(); // パラメーター情報の初期化 $this->lfInitParam($mode, $objFormParam); // POST値をセット $objFormParam->setParam($_POST); // POST値の入力文字変換 $objFormParam->convParam(); //maker_idを変数にセット $maker_id = $objFormParam->getValue('maker_id'); // 変換後のPOST値を取得 $this->arrForm1 = $objFormParam->getHashArray(); // モードによる処理切り替え switch ($this->getMode()) { // 編集処理 case 'edit': // 入力文字の変換 // エラーチェック $this->arrErr = $this->lfCheckError($this->arrForm1, $objFormParam); if (count($this->arrErr) <= 0) { if ($this->arrForm1['maker_id'] == '') { // メーカー情報新規登録 $this->lfInsert($this->arrForm1); } else { // メーカー情報編集 $this->lfUpdate($this->arrForm1); } // 再表示 $this->objDisplay->reload(); } else { // POSTデータを引き継ぐ $this->tpl_maker_id = $this->arrForm1['maker_id']; } break; // 編集前処理 case 'pre_edit': $this->arrForm1 = $this->lfPreEdit($this->arrForm, $this->arrForm1['maker_id']); $this->tpl_maker_id = $this->arrForm1['maker_id']; break; // メーカー順変更 case 'up': case 'down': $this->lfRankChange($this->arrForm1['maker_id'], $this->getMode()); // リロード SC_Response_Ex::reload(); break; // 削除 case 'delete': $this->lfDelete($this->arrForm1['maker_id']); // リロード SC_Response_Ex::reload(); break; default: break; } // メーカー情報読み込み $this->arrMaker = $this->lfDisp(); // POSTデータを引き継ぐ $this->tpl_maker_id = $maker_id; // ファイル管理クラス $this->objUpFile = new SC_UploadFile(IMAGE_TEMP_REALDIR, IMAGE_SAVE_REALDIR); // ファイル情報の初期化 $this->objUpFile = $this->lfInitFile(); // Hiddenからのデータを引き継ぐ $this->objUpFile->setHiddenFileList($_POST); switch ($mode) { case 'edit': $objFormParam->setParam($_REQUEST); $objFormParam->convParam(); $post = $objFormParam->getHashArray(); $this->arrErr = $this->lfCheckError($post, $objFormParam, $objPayment); $this->charge_flg = $post['charge_flg']; if (count($this->arrErr) == 0) { $this->lfRegistData($objFormParam, $objPayment, $_SESSION['member_id'], $post['maker_id']); $this->objUpFile->moveTempFile(); $this->tpl_onload = "location.href = './maker.php'; return;"; } $this->tpl_maker_id = $post['maker_id']; break; // 画像のアップロード case 'upload_image': $objFormParam->setParam($_REQUEST); $objFormParam->convParam(); $post = $objFormParam->getHashArray(); // ファイル存在チェック $this->arrErr = $this->objUpFile->checkExists($post['image_key']); // 画像保存処理 $this->arrErr[$post['image_key']] = $this->objUpFile->makeTempFile($post['image_key']); $this->tpl_maker_id = $post['maker_id']; break; // 画像の削除 case 'delete_image': $objFormParam->setParam($_REQUEST); $objFormParam->convParam(); $this->arrErr = $objFormParam->checkError(); $post = $objFormParam->getHashArray(); if (count($this->arrErr) == 0) { $this->objUpFile->deleteFile($post['image_key']); } $this->tpl_payment_id = $post['maker_id']; break; case 'pre_edit': $objFormParam->setParam($_REQUEST); $objFormParam->convParam(); $this->arrErr = $objFormParam->checkError(); $post = $objFormParam->getHashArray(); if (count($this->arrErr) == 0) { $arrRet = $objPayment->get($post['maker_id']); $objFormParam->setParam($arrRet); $this->charge_flg = $arrRet['charge_flg']; $this->objUpFile->setDBFileList($arrRet); } $this->tpl_maker_id = $post['maker_id']; break; default: break; } $this->arrFor1m = $objFormParam->getFormParamList(); // FORM表示用配列を渡す。 $this->arrFile = $this->objUpFile->getFormFileList(IMAGE_TEMP_URLPATH, IMAGE_SAVE_URLPATH); // HIDDEN用に配列を渡す。 $this->arrHidden = array_merge((array)$this->arrHidden, (array)$this->objUpFile->getHiddenFileList()); } /** * デストラクタ. * * @return void */ function destroy() { parent::destroy(); } /** * パラメーター情報の初期化を行う. * * @param SC_FormParam $objFormParam SC_FormParam インスタンス * @return void */ function lfInitParam($mode, &$objFormParam) { $objFormParam->addParam('メーカーID', 'maker_id', INT_LEN, 'n', array('NUM_CHECK', 'MAX_LENGTH_CHECK')); $objFormParam->addParam('メーカー名', 'name', SMTEXT_LEN, 'KVa', array('EXIST_CHECK','SPTAB_CHECK','MAX_LENGTH_CHECK')); $objFormParam->addParam('メーカー画像', 'main_image', SMTEXT_LEN, 'KVa', array('SPTAB_CHECK','MAX_LENGTH_CHECK')); switch ($mode) { case 'edit': $objFormParam->addParam('支払方法', 'payment_method', STEXT_LEN, 'KVa', array('EXIST_CHECK', 'MAX_LENGTH_CHECK')); $objFormParam->addParam('手数料', 'charge', PRICE_LEN, 'n', array('EXIST_CHECK', 'NUM_CHECK', 'MAX_LENGTH_CHECK')); $objFormParam->addParam('利用条件(〜円以上)', 'rule_max', PRICE_LEN, 'n', array('NUM_CHECK', 'MAX_LENGTH_CHECK')); $objFormParam->addParam('利用条件(〜円以下)', 'upper_rule', PRICE_LEN, 'n', array('NUM_CHECK', 'MAX_LENGTH_CHECK')); $objFormParam->addParam('固定', 'fix'); $objFormParam->addParam('支払いID', 'payment_id', INT_LEN, 'n', array('NUM_CHECK', 'MAX_LENGTH_CHECK')); $objFormParam->addParam('課金フラグ', 'charge_flg', INT_LEN, 'n', array('NUM_CHECK', 'MAX_LENGTH_CHECK')); break; case 'upload_image': case 'delete_image': $objFormParam->addParam('支払いID', 'maker_id', INT_LEN, 'n', array('NUM_CHECK', 'MAX_LENGTH_CHECK')); $objFormParam->addParam('支払方法', 'maker_id', STEXT_LEN, 'KVa', array('EXIST_CHECK', 'MAX_LENGTH_CHECK')); $objFormParam->addParam('手数料', 'charge', PRICE_LEN, 'n', array('EXIST_CHECK', 'NUM_CHECK', 'MAX_LENGTH_CHECK')); $objFormParam->addParam('利用条件(〜円以上)', 'rule_max', PRICE_LEN, 'n', array('NUM_CHECK', 'MAX_LENGTH_CHECK')); $objFormParam->addParam('利用条件(〜円以下)', 'upper_rule', PRICE_LEN, 'n', array('NUM_CHECK', 'MAX_LENGTH_CHECK')); $objFormParam->addParam('固定', 'fix'); $objFormParam->addParam('画像キー', 'image_key', STEXT_LEN, 'KVa', array('EXIST_CHECK', 'MAX_LENGTH_CHECK')); break; case 'pre_edit': $objFormParam->addParam('支払いID', 'maker_id', INT_LEN, 'n', array('NUM_CHECK', 'MAX_LENGTH_CHECK')); $objFormParam->addParam('課金フラグ', 'charge_flg', INT_LEN, 'n', array('NUM_CHECK', 'MAX_LENGTH_CHECK')); break; default: $objFormParam->addParam('支払方法', 'payment_method', STEXT_LEN, 'KVa', array('EXIST_CHECK', 'MAX_LENGTH_CHECK')); $objFormParam->addParam('手数料', 'charge', PRICE_LEN, 'n', array('EXIST_CHECK', 'NUM_CHECK', 'MAX_LENGTH_CHECK')); $objFormParam->addParam('利用条件(〜円以上)', 'rule_max', PRICE_LEN, 'n', array('NUM_CHECK', 'MAX_LENGTH_CHECK')); $objFormParam->addParam('利用条件(〜円以下)', 'upper_rule', PRICE_LEN, 'n', array('NUM_CHECK', 'MAX_LENGTH_CHECK')); $objFormParam->addParam('固定', 'fix'); break; } } /** * メーカー情報表示. * * @return array $arrMaker メーカー情報 */ function lfDisp() { $objQuery =& SC_Query_Ex::getSingletonInstance(); // 削除されていないメーカー情報を表示する $where = 'del_flg = 0'; $objQuery->setOrder('rank DESC'); $arrMaker = array(); $arrMaker = $objQuery->select('maker_id, name,main_image', 'dtb_maker', $where); return $arrMaker; } /** * メーカー情報新規登録. * * @param array $arrForm メーカー情報 * @return void */ function lfInsert(&$arrForm) { $objQuery =& SC_Query_Ex::getSingletonInstance(); // INSERTする値を作成する $sqlval['name'] = $arrForm['name']; $sqlval['main_image'] = $arrForm['main_image']; $sqlval['rank'] = $objQuery->max('rank', 'dtb_maker') + 1; $sqlval['creator_id'] = $_SESSION['member_id']; $sqlval['update_date'] = 'CURRENT_TIMESTAMP'; $sqlval['create_date'] = 'CURRENT_TIMESTAMP'; $sqlval['maker_id'] = $objQuery->nextVal('dtb_maker_maker_id'); // INSERTの実行 $objQuery->insert('dtb_maker', $sqlval); } /** * メーカー情報更新. * * @param array $arrForm メーカー情報 * @return void */ function lfUpdate(&$arrForm) { $objQuery =& SC_Query_Ex::getSingletonInstance(); // UPDATEする値を作成する $sqlval['name'] = $arrForm['name']; $sqlval['main_image'] = $arrForm['main_image']; $sqlval['update_date'] = 'CURRENT_TIMESTAMP'; $where = 'maker_id = ?'; // UPDATEの実行 $objQuery->update('dtb_maker', $sqlval, $where, array($arrForm['maker_id'])); } /** * メーカー情報削除. * * @param integer $maker_id メーカーID * @return void */ function lfDelete($maker_id) { $objDb = new SC_Helper_DB_Ex(); $objDb->sfDeleteRankRecord('dtb_maker', 'maker_id', $maker_id, '', true); } /** * メーカー情報順番変更. * * @param integer $maker_id メーカーID * @param string $mode up か down のモードを示す文字列 * @return void */ function lfRankChange($maker_id, $mode) { $objDb = new SC_Helper_DB_Ex(); switch ($mode) { case 'up': $objDb->sfRankUp('dtb_maker', 'maker_id', $maker_id); break; case 'down': $objDb->sfRankDown('dtb_maker', 'maker_id', $maker_id); break; default: break; } } /** * メーカー情報編集前処理. * * @param array $arrForm メーカー情報 * @param integer $maker_id メーカーID * @return array $arrForm メーカー名を追加 */ function lfPreEdit(&$arrForm, $maker_id) { $objQuery =& SC_Query_Ex::getSingletonInstance(); // 編集項目を取得する $where = 'maker_id = ?'; $arrMaker = array(); $arrMaker = $objQuery->select('name', 'dtb_maker', $where, array($maker_id)); $arrForm1['name'] = $arrMaker[0]['name']; return $arrForm; } /** * 入力エラーチェック. * * @param array $arrForm メーカー情報 * @return array $objErr->arrErr エラー内容 */ function lfCheckError(&$arrForm, &$objFormParam) { $arrErr = $objFormParam->checkError(); if (!empty($arrErr)) { return $arrErr; } // maker_id の正当性チェック if (!empty($arrForm['maker_id'])) { $objDb = new SC_Helper_DB_Ex(); if (!SC_Utils_Ex::sfIsInt($arrForm['maker_id']) || SC_Utils_Ex::sfIsZeroFilling($arrForm['maker_id']) || !$objDb->sfIsRecord('dtb_maker', 'maker_id', array($arrForm['maker_id'])) ) { // maker_idが指定されていて、且つその値が不正と思われる場合はエラー $arrErr['maker_id'] = '※ メーカーIDが不正です<br />'; } } if (!isset($arrErr['name'])) { $objQuery =& SC_Query_Ex::getSingletonInstance(); $arrMaker = array(); $arrMaker = $objQuery->select('maker_id, name', 'dtb_maker', 'del_flg = 0 AND name = ?', array($arrForm['name'])); // 編集中のレコード以外に同じ名称が存在する場合 if ($arrMaker[0]['maker_id'] != $arrForm['maker_id'] && $arrMaker[0]['name'] == $arrForm['name']) { $arrErr['name'] = '※ 既に同じ内容の登録が存在します。<br />'; } } return $arrErr; } /* ファイル情報の初期化 */ function lfInitFile() { $this->objUpFile->addFile('ロゴ画像', 'maker_image', array('gif','jpeg','jpg','png'), IMAGE_SIZE, false, CLASS_IMAGE_WIDTH, CLASS_IMAGE_HEIGHT); return $this->objUpFile; } /* DBへデータを登録する */ function lfRegistData(&$objFormParam, SC_Helper_Maker_Ex $objPayment, $member_id, $maker_id = '') { $sqlval = array_merge($objFormParam->getHashArray(), $this->objUpFile->getDBFileList()); $sqlval['update_date'] = 'CURRENT_TIMESTAMP'; $sqlval['maker_id'] = $maker_id; $sqlval['name'] = $name; $sqlval['main_image'] = $main_image; if ($sqlval['fix'] != '1') { $sqlval['fix'] = 2; // 自由設定 } $objPayment->save($sqlval); function lfCheckError($post, $objFormParam, SC_Helper_Maker_Ex $objPayment) { // DBのデータを取得 $arrPaymentData = $objPayment->get($post['maker_id']); // 手数料を設定できない場合には、手数料を0にする if ($arrPaymentData['charge_flg'] == 2) { $objFormParam->setValue('charge', '0'); } // 入力データを渡す。 $arrRet = $objFormParam->getHashArray(); $objErr = new SC_CheckError_Ex($arrRet); $objErr->arrErr = $objFormParam->checkError(); // 利用条件(下限)チェック if ($arrRet['rule_max'] < $arrPaymentData['rule_min'] and $arrPaymentData['rule_min'] != '') { $objErr->arrErr['rule'] = '利用条件(下限)は' . $arrPaymentData['rule_min'] .'円以上にしてください。<br>'; } // 利用条件(上限)チェック if ($arrRet['upper_rule'] > $arrPaymentData['upper_rule_max'] and $arrPaymentData['upper_rule_max'] != '') { $objErr->arrErr['upper_rule'] = '利用条件(上限)は' . $arrPaymentData['upper_rule_max'] .'円以下にしてください。<br>'; } // 利用条件チェック $objErr->doFunc(array('利用条件(〜円以上)', '利用条件(〜円以下)', 'rule_max', 'upper_rule'), array('GREATER_CHECK')); return $objErr->arrErr; } } } admin/products/maker.tpl <form name="form1" id="form1" method="post" action="./maker.php" enctype="multipart/form-data"> <input type="hidden" name="<!--{$smarty.const.TRANSACTION_ID_NAME}-->" value="<!--{$transactionid}-->" /> <input type="hidden" name="mode" value="edit" /> <input type="hidden" name="maker_id" value="<!--{$tpl_maker_id}-->" /> <input type="hidden" name="image_key" value="" /> <input type="hidden" name="fix" value="<!--{$arrForm.fix.value}-->" /> <!--{foreach key=key item=item from=$arrHidden}--> <input type="hidden" name="<!--{$key}-->" value="<!--{$item|h}-->" /> <!--{/foreach}--> <input type="hidden" name="charge_flg" value="<!--{$charge_flg}-->" /> <div id="products" class="contents-main"> <table class="form"> <tr> <th>メーカー名<span class="attention"> *</span></th> <td> <!--{if $arrErr.maker_id}--><span class="attention"><!--{$arrErr.maker_id}--></span><br /><!--{/if}--> <!--{if $arrErr.name}--><span class="attention"><!--{$arrErr.name}--></span><!--{/if}--> <input type="text" name="name" value="<!--{$arrForm1.name|h}-->" maxlength="<!--{$smarty.const.SMTEXT_LEN}-->" style="" size="60" class="box60"/> <span class="attention"> (上限<!--{$smarty.const.SMTEXT_LEN}-->文字)</span> </td> </tr> <tr> <th>ロゴ画像</th> <td> <!--{assign var=key value="maker_image"}--> <span class="attention"><!--{$arrErr[$key]}--></span> <!--{if $arrFile[$key].filepath != ""}--> <img src="<!--{$arrFile[$key].filepath}-->" alt="<!--{$arrForm.main_image|h}-->"> <br /><a href="" onclick="fnModeSubmit('delete_image', 'image_key', '<!--{$key}-->'); return false;">[画像の取り消し]</a><br /> <!--{/if}--> <input type="file" name="<!--{$key}-->" style="<!--{$arrErr[$key]|sfGetErrorColor}-->" /> <a class="btn-normal" href="java script:;" name="btn" onclick="fnModeSubmit('upload_image', 'image_key', '<!--{$key}-->'); return false;">アップロード</a> </td> </tr> </table> <div class="btn-area"> <ul> <li><a class="btn-action" href="java script:;" onclick="fnFormModeSubmit('form1', 'edit', '', ''); return false;"><span class="btn-next">この内容で登録する</span></a></li> </ul> </div> <!--{if count($arrMaker) > 0}--> <table class="list"> <col width="10%" /> <col width="50%" /> <col width="10%" /> <col width="10%" /> <col width="20%" /> <tr> <th>ID</th> <th>メーカー</th> <th class="edit">編集</th> <th class="delete">削除</th> <th>移動</th> </tr> <!--{section name=cnt loop=$arrMaker}--> <tr style="background:<!--{if $tpl_maker_id != $arrMaker[cnt].maker_id}-->#ffffff<!--{else}--><!--{$smarty.const.SELECT_RGB}--><!--{/if}-->;"> <!--{assign var=maker_id value=$arrMaker[cnt].maker_id}--> <td><!--{$maker_id|h}--></td> <td><!--{$arrMaker[cnt].name|h}--></td> <td class="center"> <!--{if $tpl_maker_id != $arrMaker[cnt].maker_id}--> <a href="?" onclick="fnModeSubmit('pre_edit', 'maker_id', <!--{$arrMaker[cnt].maker_id}-->); return false;">編集</a> <!--{else}--> 編集中 <!--{/if}--> </td> <td class="center"> <!--{if $arrClassCatCount[$class_id] > 0}--> - <!--{else}--> <a href="?" onclick="fnModeSubmit('delete', 'maker_id', <!--{$arrMaker[cnt].maker_id}-->); return false;">削除</a> <!--{/if}--> </td> <td class="center"> <!--{if $smarty.section.cnt.iteration != 1}--> <a href="?" onclick="fnModeSubmit('up', 'maker_id', <!--{$arrMaker[cnt].maker_id}-->); return false;" />上へ</a> <!--{/if}--> <!--{if $smarty.section.cnt.iteration != $smarty.section.cnt.last}--> <a href="?" onclick="fnModeSubmit('down', 'maker_id', <!--{$arrMaker[cnt].maker_id}-->); return false;" />下へ</a> <!--{/if}--> </td> </tr> <!--{/section}--> </table> <!--{/if}--> </div> </form> |
AMUAMU |
投稿日時: 2014/5/28 13:37
対応状況: −−−
|
神 登録日: 2009/5/2 居住地: 東京都 投稿: 2712 |
Re: 管理機能>メーカー登録 に画像アップロード機能を追加したい 細かくコードを追うのは難しいですが問題の要点
>画像のアップロードボタンを押すと画像は表示されるようになりましたが、 >DBへの登録がうまくできませんでした。 だけを考えると、アップロードされて表示まで行けば大半は終わりで 単にデータの受け渡しとデータ保存の部分の修正不足だと思いますので、各処理毎に、情報の受け渡しがきちんとできているかをデバッグしていくのが良いと思います
|
beginner14 |
投稿日時: 2014/5/30 1:39
対応状況: −−−
|
半人前 登録日: 2014/5/17 居住地: 投稿: 11 |
Re: 管理機能>メーカー登録 に画像アップロード機能を追加したい AMUAMU 様
大変お世話になっております。 長々とコードを記載してしまいましてお手数をお掛け致しました。 申し訳ございません。 現在デバッグで調べているところでございます。 SC_Utils::sfPrintR($arrForm.name); SC_Utils::sfPrintR($arrForm.main_image); などで見るとstring(4) "name"やstring(10) "main_image" と表示されておりうまく取得できていないようでした。 現在tplで<!--{$arrForm|@debug_print_var}-->とデバッグしてみたところnullとなっており、こちらもうまくフォームに渡せていないのだと思いポストしている関数などもわかりませんでした。 |
shutta |
投稿日時: 2014/5/30 9:43
対応状況: −−−
|
仙人 登録日: 2010/2/4 居住地: 関西 投稿: 835 |
Re: 管理機能>メーカー登録 に画像アップロード機能を追加したい $arrForm.name.value
$arrForm.main_image.value のように、.valueを付加してみるとどうでしょうか?
|
beginner14 |
投稿日時: 2014/5/31 3:14
対応状況: −−−
|
半人前 登録日: 2014/5/17 居住地: 投稿: 11 |
Re: 管理機能>メーカー登録 に画像アップロード機能を追加したい shutta様
ご回答頂きまして誠にありがとうございます。 ご回答を頂きました通り、.valueを付加してデバッグしたところ下記のように表示されました。 **デバッグ中** string(15) "main_imagevalue" **デバッグ中** 上記のデバッグなのですが、html/admin/products/maker.phpの一番上に SC_Utils::sfPrintR($arrForm.main_image.value);と書いたのですが 記載場所が間違っているのでしょうか。 一方tpl側のデバッグでは下記のように表示されました。 <!--{$arrForm.name.value|@debug_print_var}--> ・・・・ メーカー名を入力した文字列の、頭の1文字だけが表示される <!--{$arrForm.name|@debug_print_var}--> ・・・・ 入力した文字列が表示される。 <!--{$arrForm.main_image.value|@debug_print_var}--> ・・・・ ""と表示される また、<!--{$arrForm|@debug_print_var}-->で見てみたところ下記のようになりました。 Array (8) maker_id => "" name => "メーカー名を入力した文字列が表示される" main_image => "" charge => "" rule_max => "" upper_rule => "" fix => "" image_key => "maker_image" ここで”この内容で登録する”を押すと、下記のようにpayment_idが表示されておりました。 すべてpayment_id → maker_idへ変更したと思っていましたので、この辺がDB登録がうまくできない 要因なのかと思いました。 Array (10) maker_id => "" name => "メーカー名を入力した文字列が表示される" main_image => "" payment_method => "" charge => "" rule_max => "" upper_rule => "" fix => "" payment_id => "" charge_flg => "" あと、少し気になっていることがありまして、 LC_Page_Admin_Basis_PaymentInputから下記をコピーしてそのままLC_Page_Admin_Maker.phpへ追加しました $mode = $this->getMode(); switch ($mode) LC_Page_Admin_Maker.phpの方には元々 switch ($this->getMode()) がありますので この辺の変数の受け渡しがうまくいっていないのかと思っております。 長々とお手数をお掛け致しますが、何卒よろしくお願いいたします。 |
shutta |
投稿日時: 2014/6/2 13:23
対応状況: −−−
|
仙人 登録日: 2010/2/4 居住地: 関西 投稿: 835 |
Re: 管理機能>メーカー登録 に画像アップロード機能を追加したい 引用:
すみません、.valueの件は、適当なアドバイスではなかったようです。(あまり頭が回っていない状態で書き込んでしまいました。) プログラム(php)側でデバッグするなら、
というような記載になるかと思います。 引用:
記載場所としては、 ページクラス(data/class/pages/admin/products/LC_Page_Admin_Products_Maker.php)側に記載するのが良いかと思います。 ただ、個別に表示させるよりは、
のように入力値を一気に出力させた方が追い易いとは思います。 引用:
コードを詳細には拝読しておりませんが、確かにコピーした際に不要な部分があるようですので、そこが影響しているかもしれませんね。 (payment_idの記載が残っているようですし、支払方法関連の不要なパラメーターや処理がごっそりのこっているようですし。) 引用:
このあたりは、問題なさそうな気がします。 一点気になるのは、入力値を格納する配列名が、 arrForm1 と arrForm が混在しているようで、どこかで変数名を間違えているんじゃないかと思います。(そのために上手く入力値が渡っていないじゃないかと) コードも追いにくいと思いますので、arrFormに統一した方が良いかと思います。
|
beginner14 |
投稿日時: 2014/6/3 21:02
対応状況: 解決済
|
半人前 登録日: 2014/5/17 居住地: 投稿: 11 |
Re: 管理機能>メーカー登録 に画像アップロード機能を追加したい shutta 様 AMUAMU様
ご回答頂きまして誠にありがとうございました。 デバッグの基本的なことからご説明をして頂きまして 大変お手数をお掛け致しました。 ポイントでのデバッグをしても、それを解析することが できず、現状の知識で今回のカスタマイズを実現するのは 難しいようです。 基本から勉強しながら出直したいと思います。 ありがとうございました。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |