バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > 管理機能 > 配信メールに会員IDを追加したい

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
PRIA
投稿日時: 2020/8/25 13:14
対応状況: −−−
常連
登録日: 2020/8/24
居住地:
投稿: 34
配信メールに会員IDを追加したい
・EC-CUBE4
・さくらマネージドサーバー
・Windows10 64bit
・PHP7.3.21

フォーム上では、以下のような記述で
会員IDの取得または条件分けができるのですが、

{% if app.user.id == '3' %}
会員ID:{{ app.user.id }}
{% endif %}

配信メールを管理している、MailService.phpでの取得方法やifの構文が分からず、ご質問させていただきました。
468
投稿日時: 2020/8/26 10:43
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 3217
Re: 配信メールに会員IDを追加したい
送信しようとするメールにもよりますが
Customer.id
Order.Customer.id
等で取得できると思います。


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

PRIA
投稿日時: 2020/8/26 14:56
対応状況: −−−
常連
登録日: 2020/8/24
居住地:
投稿: 34
Re: 配信メールに会員IDを追加したい
shiro8様

ご回答いただき、感謝いたします。

Customer.id
またはOrder.Customer.idで取得できるとの事で
以下、一連のコード内に


    /**
     * Send order mail.
     *
     * @param \Eccube\Entity\Order $Order 受注情報
     *
     * @return \Swift_Message
     */
    public function sendOrderMail(\Eccube\Entity\Order $Order)
    {
        log_info('受注メール送信開始');

        $MailTemplate = $this->mailTemplateRepository->find($this->eccubeConfig['eccube_order_mail_template_id']);

        $body = $this->twig->render($MailTemplate->getFileName(), [
            'Order' => $Order,
        ]);

        $message = (new \Swift_Message())
            ->setSubject('['.$this->BaseInfo->getShopName().'] '.$MailTemplate->getMailSubject())
            ->setFrom([$this->BaseInfo->getEmail01() => $this->BaseInfo->getShopName()])
            ->setTo([$Order->getEmail()])

            if ({Order.Customer.id=='9'){
                 ->setBcc($this->BaseInfo->getEmail01())
            }else{
                 ->setBcc(array($this->BaseInfo->getEmail01(),'test01@gmail.com','test02@gmail.com'))  
            }

            ->setReplyTo($this->BaseInfo->getEmail03())
            ->setReturnPath($this->BaseInfo->getEmail04());



if ({Order.Customer.id=='9'){
->setBcc($this->BaseInfo->getEmail01())
}else{
->setBcc(array($this->BaseInfo->getEmail01(),'test01@gmail.com';,'test02@gmail.com';))
}

このように記述しましたが、会員の新規登録をしようとすると
「システムエラーが発生しました」と出てしまいます。
$で変数を宣言してどこかのクラスから参照しなければならないのでしょうか?
468
投稿日時: 2020/8/27 12:55
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 3217
Re: 配信メールに会員IDを追加したい
twigとphpではEntityクラスのメソッドの呼び出しの記述が変わります。
phpで記述される際は
Order.Customer.id

$Order->getCustomer()->getId()となります。

エラーが発生しているのはその辺りではないでしょうか?


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

PRIA
投稿日時: 2020/8/27 13:48
対応状況: −−−
常連
登録日: 2020/8/24
居住地:
投稿: 34
Re: 配信メールに会員IDを追加したい
shiro8様

連日ご回答くださり、ありがとうございます。

$Order->getCustomer()->getId()
PHPではこのような記法になっているのですね。

if ($Order->getCustomer()->getId()=='9'){
このような指定ではエラーになりましたので
->setTo([$Order->getEmail()])
と同じように呼び出すのだと推測しておりますが、
条件式に、$Order->getCustomer()->getId()を使いたいときは
どうすればよいのでしょうか?

468
投稿日時: 2020/8/28 10:22
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 3217
Re: 配信メールに会員IDを追加したい
どのようなエラーが発生しているのか分かりませんが
if ($Order->getCustomer()->getId()=='9')
のままの記述では、非会員の注文の場合、エラーになるかと思います。

非会員の場合、
$Order->getCustomer()の結果がnullになります。
上記の記述だと
null->getId()となり、nullにはgetIdというメソッドは無い。というエラーになります。

if ($Order->getCustomer() && $Order->getCustomer()->getId()=='9')
のようにifの条件を追加して$Order->getCustomer()の結果がnull以外かどうか判定すれば良いかと思います。

他の箇所でエラーが出ている場合は、何が原因か分かりませんので
ご自身でエラーログを確認していただく必要があるかと思います。


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

PRIA
投稿日時: 2020/8/28 12:00
対応状況: −−−
常連
登録日: 2020/8/24
居住地:
投稿: 34
Re: 配信メールに会員IDを追加したい
shiro様

早速、コードを以下に変えて走らせてみたのですが
エラーは解消されませんでした。


if ($Order->getCustomer() && $Order->getCustomer()->getId()=='9'){
->setBcc($this->BaseInfo->getEmail01())
}else{
->setBcc(array($this->BaseInfo->getEmail01(),'test1@gmail.com','test2@gmail.com'))
}


ちなみにログインしているユーザーの会員IDは9で試しておりますので、elseになることはないかと思います。

エラーログを確認しましたら、以下のようになっておりました。


[2020-08-28 11:32:38] front.ERROR [muk6tk63g6pps5qf7t34p4esqh] [b435b1b] [anon.] [Eccube\Log\Logger:log:66] - システムエラーが発生しました。 ["Parse error: syntax error, unexpected 'if' (T_IF)","/home/test/www/rc/src/Eccube/Service/MailService.php",358 ・・・※以下略


様々な箇所でエラーが発生しているようなのですが
具体的な内容については突きとめることができませんでした。

このエラーから、どのような理由が考えられますでしょうか?
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

総メンバー数は88,883名です
総投稿数は110,000件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2313
5
umebius
2085
6
yuh
1819
7
h_tanaka
1646
8
red
1570
9
mcontact
1295
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
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.