バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

プラグイン > その他 > お問い合わせフォーム追加

その他

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
tkm12121
投稿日時: 2020/4/28 17:18
対応状況: 確認中
半人前
登録日: 2020/3/19
居住地:
投稿: 13
お問い合わせフォーム追加
お問い合わせフォームを複製して作成を致しましたが、元々ある「お問い合わせフォーム」の確認ページへ移行できない状況です。

「新しく追加したフォーム」は確認・完了まで表示されます。

【src >> Eccube >> Form >> Type >> Front >>ContactType.php】にコード追加と
【src >>Eccube >>Form >>Type >>ChoiceType.php】を追加したところ、確認ページへ移行できなくなってしまいます。両方を削除すると元に戻ります。

恐れ入りますが、よろしくお願いいたします。

―――――――――――――――――

【ContactType.php追加内容】

use Symfony\Component\Form\Extension\Core\Type\ChoiceType;




$Selection = ['見積依頼' => '見積依頼','価格に関して' => '価格に関して','商品に関して' => '商品に関して','その他' => 'その他'];
$builder
->add('how', ChoiceType::class, [
'required' => true,
'choices' => $Selection,
'multiple' => false,
'expanded' => false,
'mapped' => true,
'placeholder' => '選択してください ▼',
'constraints' => [
new Assert\NotBlank(),
],
])

―――――――――――――――――


[src >>Eccube >>Form >>Type >>ChoiceType.php]へ追加


<?php

/*
* This file is part of EC-CUBE
*
* Copyright(c) EC-CUBE CO.,LTD. All Rights Reserved.
*
* http://www.ec-cube.co.jp/
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/

namespace Eccube\Form\Type;

use Eccube\Common\EccubeConfig;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\FormInterface;
use Symfony\Component\Form\FormView;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Validator\Constraints as Assert;

class ChoiceType extends AbstractType
{
/**
* @var EccubeConfig
*/
protected $eccubeConfig;

/**
* ChoiceType constructor.
*
* @param EccubeConfig $eccubeConfig
*/
public function __construct(
EccubeConfig $eccubeConfig
) {
$this->eccubeConfig = $eccubeConfig;
}

/**
* {@inheritdoc}
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$options['how_options']['required'] = $options['required'];

// required の場合は NotBlank も追加する
if ($options['required']) {
$options['how_options']['constraints'] = array_merge([
new Assert\NotBlank(),
], $options['how_options']['constraints']);
}

if (!isset($options['options']['error_bubbling'])) {
$options['options']['error_bubbling'] = $options['error_bubbling'];
}

if (empty($options['how'])) {
$options['how'] = $builder->getHow();
}

$builder
->add($options['how'], TextType::class, array_merge_recursive($options['options'], $options['how_options']))
;

$builder->setAttribute('how', $options['how']);
$builder->setAttribute('how', $options['how']);
}

/**
* {@inheritdoc}
*/
public function buildView(FormView $view, FormInterface $form, array $options)
{
$builder = $form->getConfig();
$view->vars['how'] = $builder->getAttribute('how');
}

/**
* {@inheritdoc}
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'options' => [],
'how_options' => [
'attr' => [
'placeholder' => 'common.how',
],
'constraints' => [
new Assert\Length([
'max' => $this->eccubeConfig['eccube_name_len'],
]),
new Assert\Regex([
'pattern' => '/^[^\s ]+$/u',
'message' => 'form_error.not_contain_spaces',
]),
],
],
'how' => '',
'error_bubbling' => false,
'inherit_data' => true,
'trim' => true,
]);
}

/**
* {@inheritdoc}
*/
public function getBlockPrefix()
{
return 'how';
}
}

468
投稿日時: 2020/4/28 18:23
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 3217
Re: お問い合わせフォーム追加
元々の問い合わせフォームと新しく追加されたフォームで
1つのContactType.phpを利用しようとされているという事でしょうか?

2つのフォームで入力する項目は一緒という事ですか?


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

tkm12121
投稿日時: 2020/4/28 19:05
対応状況: −−−
半人前
登録日: 2020/3/19
居住地:
投稿: 13
Re: お問い合わせフォーム追加
「新規フォーム」と「元々のフォーム」の内容が変わりますので、ContactType.phpを別々で使用したいのですが、どうやったらよいのか分からない状況です。

新規フォームは、下記サイトを参考にappに追加しました。
https://www.creatorlab.jp/2019/08/17/ec-cube-4%e5%95%8f%e3%81%84%e5%90%88%e3%82%8f%e3%81%9b%e3%83%95%e3%82%a9%e3%83%bc%e3%83%a0%e3%81%ae%e8%a4%87%e8%a3%bd/

よろしくお願いいたします。
468
投稿日時: 2020/4/29 12:06
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 3217
Re: お問い合わせフォーム追加
リンク先のページではformTypeは複製していないのですね。
私がフォームを追加する場合は、ContactType.phpをコピーして新しいファイルを追加するかと思います。
(本体のソースを直接触る事になるのであまり良いやり方ではないと思いますが)

コピーしたファイルを
/src/Eccube/Form/Type/Frontに配置して
ファイル名とソース内のクラス名、function getBlockPrefix()の返り値を他のFormTypeクラスと重複しないようにすれば

$builder = $this->formFactory->createBuilder(**新しいクラス名**Type::class);

で利用できるのではないでしょうか?

/app/Customize/Form/Type/Front/にコピーしたファイルを配置しても
useでパスを指定する形でも利用できるのではないかと思います。
(その際、コピーしたFormType内のnamespaceも正しいパスに書き換えないとエラーになると思います)


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

tkm12121
投稿日時: 2020/4/30 10:00
対応状況: −−−
半人前
登録日: 2020/3/19
居住地:
投稿: 13
Re: お問い合わせフォーム追加
ご回答ありがとうございます。
内容通りに作成したところ、新・旧フォーム共に使うことが出来ました。本当に助かりました。ありがとうございます!
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

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

投稿数ランキング

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
1285
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.