バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > 管理機能 > チェックボックスが保存できない

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
h_tanaka
投稿日時: 2018/1/26 18:19
対応状況: 解決済
登録日: 2016/7/22
居住地: 愛媛県
投稿: 1638
チェックボックスが保存できない
EC-CUBE3.0.15

ニュース管理のソースコードを参考にバナー管理を作成しています。
編集画面の表示はうまくいったのですが、保存時に失敗します。
boolean 型から smallint 型への変換がうまくできないようです。
どうすれば解決できますでしょうか?

■エラー
TransformationFailedException in Form.php line 1161:
Unable to transform value for property path "link_method": Expected a Boolean.

以下、ソースです。(ある程度抜粋しています)

src/Eccube/Resource/doctrine/Eccube.Entity.Banner.dcm.yml
Eccube\Entity\Banner:
    type: entity
    table: dtb_banner
    repositoryClass: Eccube\Repository\BannerRepository
    fields:
        link_method:
            type: smallint
            nullable: false
            unsigned: false
            options:
                default: '0'
    lifecycleCallbacks: {  }


src/Eccube/Entity/Banner.php
    /**
     * @var integer
     */
    private $link_method;

    /**
     * Set link_method
     *
     * @param  integer $linkMethod
     * @return Banner
     */
    public function setLinkMethod($linkMethod)
    {
        $this->link_method = $linkMethod;

        return $this;
    }

    /**
     * Get link_method
     *
     * @return integer
     */
    public function getLinkMethod()
    {
        return $this->link_method;
    }


src/Eccube/Form/Type/Admin/BannerType.php
class BannerType extends AbstractType
{
    /**
     * {@inheritdoc}
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
         $builder
            ->add('link_method', 'checkbox', array(
                'required' => false,
                'label' => '別ウィンドウを開く',
                'value' => '1',
            ))
        ;
    }


src/Eccube/Controller/Admin/Content/BannerController.php
class BannerController extends AbstractController
{
    public function edit(Application $app, Request $request, $id = null)
    {

        $builder = $app['form.factory']
            ->createBuilder('admin_banner', $Banner);
        $form = $builder->getForm();    // ★ ここでエラー発生
    }
}


src/Eccube/Resource/template/admin/Content/banner_edit.twig
                    {{ form_row(form.link_method) }}


ちなみに、Entity のアノテーションを Integer から boolean に変えても解決しませんでした。


----------------
EC-CUBE 《プラチナ》ランクパートナー
トエビス株式会社 田中 宏典
EC-CUBEの機能やデザインのカスタマイズ承ります。

minori
投稿日時: 2018/1/26 19:17
対応状況: −−−
常連
登録日: 2017/10/12
居住地:
投稿: 40
Re: チェックボックスが保存できない
商品規格登録画面のフォームで
同じような処理をしている箇所があります。
一度、値を変換してあげる必要があるようです。

Eccube\Form\Type\Admin\ProductClassType.php
$transformer = new DataTransformer\IntegerToBooleanTransformer();

$builder
    ->add($builder->create('stock_unlimited', 'checkbox', array(
        'label' => '無制限',
        'value' => '1',
        'required' => false,
    ))->addModelTransformer($transformer));

上記のようにIntegerToBooleanTransformerクラスを
使ってみてはいかがでしょうか。
h_tanaka
投稿日時: 2018/1/29 9:22
対応状況: −−−
登録日: 2016/7/22
居住地: 愛媛県
投稿: 1638
Re: チェックボックスが保存できない
minoriさん

ありがとうございます!
ご提示のやり方でうまくエラーが解決しました!

src/Eccube/Form/Type/Admin/BannerType.php
use Eccube\Form\DataTransformer;

class BannerType extends AbstractType
{
    /**
     * {@inheritdoc}
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {

        $transformer = new DataTransformer\IntegerToBooleanTransformer();

        $builder
            ->add($builder->create('link_method', 'checkbox', array(
                'required' => false,
                'label' => '別ウィンドウを開く',
                'value' => '1',
            ))->addModelTransformer($transformer))
        ;
    }


----------------
EC-CUBE 《プラチナ》ランクパートナー
トエビス株式会社 田中 宏典
EC-CUBEの機能やデザインのカスタマイズ承ります。

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

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

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2313
5
umebius
2085
6
yuh
1819
7
h_tanaka
1638
8
red
1570
9
mcontact
1286
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.