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

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

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

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Symfony

Symfony はPHPで記述されたWebアプリケーションフレームワークです。よく利用するコーディングをテンプレーティングするなど、Webアプリケーション開発の効率化を目的として設計されています。

EC-CUBE

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

Q&A

解決済

2回答

4670閲覧

【EC-CUBE4】ポイント付与率を1%未満にしたい

dreamfactory

総合スコア20

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Symfony

Symfony はPHPで記述されたWebアプリケーションフレームワークです。よく利用するコーディングをテンプレーティングするなど、Webアプリケーション開発の効率化を目的として設計されています。

EC-CUBE

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

0グッド

0クリップ

投稿2019/07/24 06:18

編集2019/07/26 01:44

いつも大変お世話になっております。

表題の件についてですが、EC-CUBE4において、ポイント付与率を200円お買い上げごとに1Pというようにしたく、

単純に0.5%と打ったところエラーになってしまいました。

そこで色々検索してみたところ、4系ではないですが

ポイント付与率 0.5 %
200円毎に1ポイント付与しようとしています。

ポイント設定画面の桁数追加方法

こちらのお二人が私がしたいことの記事を挙げてくれていました。

しかしながら、二方とも挙げている、

EC-CUBEでポイント付与率を商品価格の1%未満(0.5%とか)にしたい

こちらのサイトは閉鎖されたようで残念ながら閲覧不可でした。

なので、小数点以下の入力を可能にするにはどのファイルを触れば良いかだけでも

ご教授いただければと思い投稿しました。

皆様どうぞよろしくお願いいたします。


教えていただいた方法でサイトを見に行くことができたのですが

2系での修正方法が書いてあり、修正箇所のphpが4系だとどこに当たるのかが

ファイルの場所を見つけることがまだできていません。

引き続き場所がわかる方がいらっしゃいましたら回答をお願いしたいです。

EC-CUBEでポイント付与率を商品価格の1%未満(0.5%とか)にしたい
のサイトでは

基本情報管理の「ポイント設定」のPHPを修正で
/data/class_extends/page_extends/admin/basis/の中のLC_Page_Admin_Basis_Point_Ex.phpを

function lfInitParam() { $this->objFormParam->addParam("ポイント付与率", "point_rate", PERCENTAGE_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK")); $this->objFormParam->addParam("会員登録時付与ポイント", "welcome_point", INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK")); } ↓ 赤文字部分を削除する。 function lfInitParam() { $this->objFormParam->addParam("ポイント付与率", "point_rate", PERCENTAGE_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK")); $this->objFormParam->addParam("会員登録時付与ポイント", "welcome_point", INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK")); }

商品登録の部分のPHPの修正で

function lfErrorCheck($array) { $objErr = new SC_CheckError($array); $objErr->doFunc(array("商品名", "name", STEXT_LEN), array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK")); $objErr->doFunc(array("一覧コメント", "main_list_comment", MTEXT_LEN), array("SPTAB_CHECK", "MAX_LENGTH_CHECK")); $objErr->doFunc(array("詳細コメント", "main_comment", LLTEXT_LEN), array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK")); $objErr->doFunc(array("詳細コメント", "main_comment", $this->arrAllowedTag), array("HTML_TAG_CHECK")); $objErr->doFunc(array("ポイント付与率", "point_rate", PERCENTAGE_LEN), array("EXIST_CHECK", "NUM_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK")); $objErr->doFunc(array("商品送料", "deliv_fee", PRICE_LEN), array("NUM_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK")); ~ 省略 ~ }

上記コードのようにポイント付与率部分の"NUM_CHECK"を消し、数値チェックしないようにして、小数点を入れてもエラーが起きないようにしているみたいなのですが

そもそも2系と4系のポイント設定は

2系のポイント管理画面
![2系のポイント管理画面

4系のポイント設定画面
4系のポイント設定画面

というように大分異なるようです。

4系で色々見てみたところポイント関係のphpとして

×××/src/Eccube/Entryに

PointRateTrait.php

<?php /* * This file is part of EC-CUBE * * Copyright(c) LOCKON CO.,LTD. All Rights Reserved. * * http://www.lockon.co.jp/ * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Eccube\Entity; use Doctrine\ORM\Mapping as ORM; trait PointRateTrait { /** * @var string * * @ORM\Column(name="point_rate", type="decimal", precision=10, scale=0, options={"unsigned":true}, nullable=true) */ private $point_rate; /** * Set pointRate * * @param string $pointRate * * @return OrderItem */ public function setPointRate($pointRate) { $this->point_rate = $pointRate; return $this; } /** * Get pointRate * * @return string */ public function getPointRate() { return $this->point_rate; } }

PointTrait.php

<?php /* * This file is part of EC-CUBE * * Copyright(c) LOCKON CO.,LTD. All Rights Reserved. * * http://www.lockon.co.jp/ * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Eccube\Entity; use Doctrine\ORM\Mapping as ORM; trait PointTrait { /** * @var string * * @ORM\Column(name="add_point", type="decimal", precision=12, scale=0, options={"unsigned":true,"default":0}) */ private $add_point = '0'; /** * @var string * * @ORM\Column(name="use_point", type="decimal", precision=12, scale=0, options={"unsigned":true,"default":0}) */ private $use_point = '0'; /** * Set addPoint * * @param string $addPoint * * @return Order */ public function setAddPoint($addPoint) { $this->add_point = $addPoint; return $this; } /** * Get addPoint * * @return string */ public function getAddPoint() { return $this->add_point; } /** * Set usePoint * * @param string $usePoint * * @return Order */ public function setUsePoint($usePoint) { $this->use_point = $usePoint; return $this; } /** * Get usePoint * * @return string */ public function getUsePoint() { return $this->use_point; } }

この二つのファイルがあったのは分かりました。

でもこのファイルをどのようにいじればいいのかは分かりません・・・。

そして最終的にはポイント付与率を0.5にするというのがゴールです。

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

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

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

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

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

dreamfactory

2019/07/26 00:18

気にかけていただきありがとうございます! まだ解決できていないので追記致しました。 よろしくお願いいたします。
xenbeat

2019/07/26 00:55 編集

> 2系での修正方法が書いてあり、修正箇所のphpが4系だとどこに当たるのかがファイルの場所を見つけることがまだできていません。 そのような記載だと2系と4系の両者を深く知っている人しか答えられないですし、そもそも2系に対応する4系のファイルが見つかればこの質問は解決なんですか? ヘルプを参考にして、もう一度質問内容を整理されたほうが的確な回答を望めると思います。 https://teratail.com/help/question-tips#questionTips3-3 https://teratail.com/help/question-tips#questionTips3-4 https://teratail.com/help/question-tips#questionTips3-5 具体的にどこの何がどのようになればこの質問が解決するのか明記されることをおすすめします。 どのソースコードか検討もつかないなら、デモもありますので具体的な画面(URL)や該当項目で説明すると良いでしょう。 https://www.ec-cube.net/product/demo.php
dreamfactory

2019/07/26 01:46

大変失礼いたしました(._.) 勉強になります。見当違いだと教えていただけて助かります。
guest

回答2

0

閉鎖されたサイトを見るにはInternetArchiveの運営しているWaybackMachineが使えます。
http://web.archive.org/web/http://www.eccube-school.jp/products/detail51.html

投稿2019/07/24 12:16

ikadzuchi

総合スコア3047

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

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

dreamfactory

2019/07/25 00:17

ご回答ありがとうございます。 そんなサービスがあるとは知りませんでした! 参考にさせていただきます!
guest

0

ベストアンサー

ポイント付与率を0.5にするというのがゴールです

でしたら次の手順をお試しください。
ちなみに僕は主にSymfonyコンポーネントに関連する知識しかないので、EC-CUBE2系をまじえた回答は出来ませんがご容赦ください。

1.FormType( ShopMasterType )を修正

PHP

1->add('basic_point_rate', NumberType::class, [ 2 'required' => false, 3 'constraints' => [ 4 new Assert\Regex([ 5 'pattern' => "/^\d+$/u", 6 'message' => 'form_error.numeric_only', 7 ]), 8 new Assert\Range([ 9 'min' => 1, 10 'max' => 100, 11 ]), 12 ], 13])

PHP

1->add('basic_point_rate', NumberType::class, [ 2 'required' => false, 3 'constraints' => [ 4 new Assert\Range([ 5 'min' => 0.1, 6 'max' => 100, 7 ]), 8 ], 9])

2.Entity( BaseInfo )を修正

PHP

1/** 2 * @var string 3 * 4 * @ORM\Column(name="basic_point_rate", type="decimal", precision=10, scale=0, options={"unsigned":true, "default":1}, nullable=true) 5 */ 6private $basic_point_rate = '1';

PHP

1/** 2 * @var string 3 * 4 * @ORM\Column(name="basic_point_rate", type="decimal", precision=3, scale=1, options={"unsigned":true, "default":1.0}, nullable=true) 5 */ 6private $basic_point_rate = '1.0';

3.スキーマ更新を実行

bin/console doctrine:schema:update --dump-sql --force

投稿2019/07/26 04:52

編集2019/07/26 04:59
xenbeat

総合スコア4258

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

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

xenbeat

2019/07/26 06:24 編集

上記で1%未満を登録できるようになるとは思いますが、 0.5で登録できるようになってもポイント機能が正しく動くかどうかはきちんとご自身で動作検証してくださいね。
dreamfactory

2019/07/26 08:31

ありがとうございます。 http://doc4.ec-cube.net/customize_entity http://doc4.ec-cube.net/customize_formtype xenbeat様の回答を、上記のリンク先を参考にしながらなんとか実行することができたのですが 管理画面で付与率を0.5にすると、エラーは出ないのですが1%になり、試しに0.4で打ってみたら0%になって返ってきました。四捨五入になっているようです。 他にもなにか必要なのでしょうか。
xenbeat

2019/07/26 11:06 編集

> 管理画面で付与率を0.5にすると、エラーは出ないのですが1%になり、試しに0.4で打ってみたら0%になって返ってきました。四捨五入になっているようです。 スキーマが更新されてないだけかと思います。 > 他にもなにか必要なのでしょうか。 他にもなにか必要というか、回答の手順通りにスキーマ更新してくださいというところでしょうか。 参考にされたリンク先のEntity拡張方法ですとTraitを使っているので、今回のように同名プロパティによる拡張は不可能でしょう。 なので回答に記載した通り、Entityを直接上書きしてください。
dreamfactory

2019/07/30 02:17

遅くなって申し訳ないです。 ssh接続するためには専用のソフトを入れないといけないみたいですね!本当に初心者過ぎてわかってなかったです。とりあえずteraterm入れてみました! スキーマ更新します! 他の仕事で押しているものがあるため、時間がかかりそうなので先にBAつけさせていただきます。 ありがとうございました(^^)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問