質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
EC-CUBE

EC-CUBEは、主に日本国内で開発されているECコンテンツ管理システムです。ロックオン社のECKitを元にしてオープンソース化され、商品管理・受注管理・顧客管理・売上集計などECに特化した様々な機能を備えています。

Q&A

0回答

1885閲覧

ECCUBE3で商品画像をアップすると自動で変数にされてしまう

oyashiro

総合スコア37

EC-CUBE

EC-CUBEは、主に日本国内で開発されているECコンテンツ管理システムです。ロックオン社のECKitを元にしてオープンソース化され、商品管理・受注管理・顧客管理・売上集計などECに特化した様々な機能を備えています。

0グッド

0クリップ

投稿2017/06/06 13:59

表題について、画像のURLをそのままアップしたいです。
ProductController.phpで
下記のように、変数に変換しているのですが、
どうすれば画像のファイル名のままファイル名が決定されますか?

public function edit(Application $app, Request $request, $id = null) { ~ 省略 ~ // ファイルの登録 $images = array(); $ProductImages = $Product->getProductImage(); foreach ($ProductImages as $ProductImage) { $images[] = $ProductImage->getFileName(); } $form['images']->setData($images); $categories = array(); $ProductCategories = $Product->getProductCategories(); foreach ($ProductCategories as $ProductCategory) { /* @var $ProductCategory \Eccube\Entity\ProductCategory */ $categories[] = $ProductCategory->getCategory(); } $form['Category']->setData($categories); $Tags = array(); $ProductTags = $Product->getProductTag(); foreach ($ProductTags as $ProductTag) { $Tags[] = $ProductTag->getTag(); } $form['Tag']->setData($Tags); if ('POST' === $request->getMethod()) { $form->handleRequest($request); if ($form->isValid()) { log_info('商品登録開始', array($id)); $Product = $form->getData(); if (!$has_class) { $ProductClass = $form['class']->getData(); // 個別消費税 $BaseInfo = $app['eccube.repository.base_info']->get(); if ($BaseInfo->getOptionProductTaxRule() == Constant::ENABLED) { if ($ProductClass->getTaxRate() !== null) { if ($ProductClass->getTaxRule()) { if ($ProductClass->getTaxRule()->getDelFlg() == Constant::ENABLED) { $ProductClass->getTaxRule()->setDelFlg(Constant::DISABLED); } $ProductClass->getTaxRule()->setTaxRate($ProductClass->getTaxRate()); } else { $taxrule = $app['eccube.repository.tax_rule']->newTaxRule(); $taxrule->setTaxRate($ProductClass->getTaxRate()); $taxrule->setApplyDate(new \DateTime()); $taxrule->setProduct($Product); $taxrule->setProductClass($ProductClass); $ProductClass->setTaxRule($taxrule); } } else { if ($ProductClass->getTaxRule()) { $ProductClass->getTaxRule()->setDelFlg(Constant::ENABLED); } } } $app['orm.em']->persist($ProductClass); // 在庫情報を作成 if (!$ProductClass->getStockUnlimited()) { $ProductStock->setStock($ProductClass->getStock()); } else { // 在庫無制限時はnullを設定 $ProductStock->setStock(null); } $app['orm.em']->persist($ProductStock); } ~ 省略 ~ // 画像の登録 $add_images = $form->get('add_images')->getData(); foreach ($add_images as $add_image) { $ProductImage = new \Eccube\Entity\ProductImage(); $ProductImage ->setFileName($add_image) ->setProduct($Product) ->setRank(1); $Product->addProductImage($ProductImage); $app['orm.em']->persist($ProductImage); // 移動 $file = new File($app['config']['image_temp_realdir'] . '/' . $add_image); $file->move($app['config']['image_save_realdir']); } // 画像の削除 $delete_images = $form->get('delete_images')->getData(); foreach ($delete_images as $delete_image) { $ProductImage = $app['eccube.repository.product_image'] ->findOneBy(array('file_name' => $delete_image)); // 追加してすぐに削除した画像は、Entityに追加されない if ($ProductImage instanceof \Eccube\Entity\ProductImage) { $Product->removeProductImage($ProductImage); $app['orm.em']->remove($ProductImage); } $app['orm.em']->persist($Product); // 削除 $fs = new Filesystem(); $fs->remove($app['config']['image_save_realdir'] . '/' . $delete_image); } $app['orm.em']->persist($Product); $app['orm.em']->flush(); $ranks = $request->get('rank_images'); if ($ranks) { foreach ($ranks as $rank) { list($filename, $rank_val) = explode('//', $rank); $ProductImage = $app['eccube.repository.product_image'] ->findOneBy(array( 'file_name' => $filename, 'Product' => $Product, )); $ProductImage->setRank($rank_val); $app['orm.em']->persist($ProductImage); } } $app['orm.em']->flush(); // 商品タグの登録 // 商品タグを一度クリア $ProductTags = $Product->getProductTag(); foreach ($ProductTags as $ProductTag) { $Product->removeProductTag($ProductTag); $app['orm.em']->remove($ProductTag); } // 商品タグの登録 $Tags = $form->get('Tag')->getData(); foreach ($Tags as $Tag) { $ProductTag = new ProductTag(); $ProductTag ->setProduct($Product) ->setTag($Tag); $Product->addProductTag($ProductTag); $app['orm.em']->persist($ProductTag); } $app['orm.em']->flush(); log_info('商品登録完了', array($id)); $event = new EventArgs( array( 'form' => $form, 'Product' => $Product, ), $request ); $app['eccube.event.dispatcher']->dispatch(EccubeEvents::ADMIN_PRODUCT_EDIT_COMPLETE, $event); $app->addSuccess('admin.register.complete', 'admin'); return $app->redirect($app->url('admin_product_product_edit', array('id' => $Product->getId()))); } else { log_info('商品登録チェックエラー', array($id)); $app->addError('admin.register.failed', 'admin'); } } // 検索結果の保持 $builder = $app['form.factory'] ->createBuilder('admin_search_product'); $event = new EventArgs( array( 'builder' => $builder, 'Product' => $Product, ), $request ); $app['eccube.event.dispatcher']->dispatch(EccubeEvents::ADMIN_PRODUCT_EDIT_SEARCH, $event); $searchForm = $builder->getForm(); if ('POST' === $request->getMethod()) { $searchForm->handleRequest($request); } return $app->render('Product/product.twig', array( 'Product' => $Product, 'form' => $form->createView(), 'searchForm' => $searchForm->createView(), 'has_class' => $has_class, 'id' => $id, )); }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

xenbeat

2017/06/06 14:14 編集

繰り返しになりますが、原因は前回質問に記載した通りです。 >ソースごと削除しても正常に動いておりました この状況がそもそもおかしいです。 修正しているソースファイルと、実際にサーバーで動いているソースファイルが一致しているか確認してください。原因はそこです。
oyashiro

2017/06/06 14:17

実行されてるのがこのソースなのです。なので、このソース内を修正する必要があります。
xenbeat

2017/06/06 14:19

また1から説明することになるので前回質問に書きますね
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問