バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > その他 > 新しく追加したカラムのセレクトボックスに関数から値を表示したい

その他

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
gangelion
投稿日時: 2020/12/14 14:13
対応状況: −−−
半人前
登録日: 2020/11/21
居住地:
投稿: 11
新しく追加したカラムのセレクトボックスに関数から値を表示したい
https://sorovider.com/2019/03/20/ec-cube4%E3%81%A7%E5%95%86%E5%93%81%E9%A0%85%E7%9B%AE%E7%AD%89%E3%81%AE%E8%BF%BD%E5%8A%A0/

こちらのサイトを参考にし、商品にメーカー名カラムを追加しました。
その後、このカラムに関数の戻り値から値を取得しセレクトボックスで表示しようとする際にエラーが起こってしまいます。

```
<?php

namespace Customize\Entity;

use Doctrine\ORM\Mapping as ORM;
use Eccube\Annotation\EntityExtension;
/**
* @EntityExtension("Eccube\Entity\Product")
*/
trait ProductTrait
{
/**
* @ORM\Column(type="string", length=255, nullable=true)
* @Eccube\Annotation\FormAppend(
* auto_render=false,
* type="\Symfony\Component\Form\Extension\Core\Type\ChoiceType",
* options = {
* "required": false,
* "label": "メーカー名",
* "choices": {
* $this->getHoge(): $this->getHoge()
* }
* })
*/
public $maker_name;
public function getHoge() {
return "hoge";
}
}

こうすると
"choices": { "hoge" : "hoge" }となりhogeが出力されるのかと考えたのですが、うまくいきません。こちらphpdoc内で関数を使うにはどのように記述すればよろしいでしょうか?
また、phpdocの基本的な質問になってしまい申し訳ありませんが、コメントアウトされている箇所が反映されるのは何故なのでしょうか?
よろしくお願いいたします。
umebius
投稿日時: 2020/12/15 19:53
対応状況: −−−
登録日: 2016/7/22
居住地:
投稿: 2085
Re: 新しく追加したカラムのセレクトボックスに関数から値を表示したい
FormAppendアノテーションではそのような使い方はできないと思いますので
FormExtensionを使う方が良いのではないかなと思います。
https://doc4.ec-cube.net/customize_formtype

引用:
また、phpdocの基本的な質問になってしまい申し訳ありませんが、コメントアウトされている箇所が反映されるのは何故なのでしょうか?

こちらはアノテーションを読み取るライブラリ・機能が導入されているためかと思います。


----------------
EC-CUBEカスタマイズ・高速化・脆弱性対策・SEO ご相談ください。

2系・3系から4系へのバージョンアップ実績豊富

gangelion
投稿日時: 2020/12/15 21:35
対応状況: −−−
半人前
登録日: 2020/11/21
居住地:
投稿: 11
Re: 新しく追加したカラムのセレクトボックスに関数から値を表示したい
ご回答いただきありがとうございます。
こちらapp/Customize/Entity/***Trait.phpで実装する記事を参考にしています。
こちらTraitをクラスに変えたり、別の階層にファイルを作る必要が出てきてしまうと思うのですがそれでもAbstractTypeExtensionを使う方法しかないのでしょうか?
umebius
投稿日時: 2020/12/15 22:24
対応状況: −−−
登録日: 2016/7/22
居住地:
投稿: 2085
Re: 新しく追加したカラムのセレクトボックスに関数から値を表示したい
maker_nameをTraitで実装するのは特に問題ないというか、自然だと思います。

ただFormへの項目追加をFormAppendではなくFormExtensionで実装することでphpの関数などが使用可能です。

FormAppendというのはFormExtensionをアノテーションで簡単に実行できるようにしたようなものですので、複雑なことをするには自分でFormExtensionを作ってやることになります。


----------------
EC-CUBEカスタマイズ・高速化・脆弱性対策・SEO ご相談ください。

2系・3系から4系へのバージョンアップ実績豊富

gangelion
投稿日時: 2020/12/15 22:34
対応状況: −−−
半人前
登録日: 2020/11/21
居住地:
投稿: 11
Re: 新しく追加したカラムのセレクトボックスに関数から値を表示したい
ありがとうございます。もし可能でしたらFormAppendからFormExtentionに変える際どこを直したら良いか具体的に教えていただけないでしょうか?
教えていただいたサイトを参考にしていじってはみたものの、元のコードと違う部分が多くうまく反映できませんでした。
gangelion
投稿日時: 2020/12/15 22:36
対応状況: −−−
半人前
登録日: 2020/11/21
居住地:
投稿: 11
Re: 新しく追加したカラムのセレクトボックスに関数から値を表示したい
すいません、勘違いをしていました。
FormExtensionを新たに作り、それをこのTraitファイルで読み込ませるということでしょうか?
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

総メンバー数は88,670名です
総投稿数は109,926件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2311
5
umebius
2085
6
yuh
1819
7
h_tanaka
1637
8
red
1569
9
mcontact
1277
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.