Symfony2'de form alanı için varsayılan değer nasıl ayarlanır?


137

Metin formu alanı için varsayılan bir değer ayarlamanın kolay bir yolu var mı?


1
Evet, ancak bu soruda verilen cevaplar tatmin edici değil / çalışmıyor ... Nedenini açıklamak için bir "Düzenle" ekleyeceğim :-)
herrjeh42

Sonrasında bulunduğunuz 'mükemmel' çözümün bir alanın 'varsayılan_değer' seçeneğine sahip olduğu anlaşılıyor. Şey, şu anda öyle değil , bu yüzden şu anda aradığınız mükemmel çözümün var olduğunu düşünmüyorum. Tek şey symfony sağlar (bağlantıya bakınız) olduğu veri seçeneği. Yani if-then atm görebildiğim tek yaklaşım. Alanın kendisinde bir 'default_value' seçeneği olsa bile, aslında aynı şeyi yine de dahili olarak yapacağını hayal ediyorum.
crysallus

Ayrıca, aşağıdaki 2. yorumlarıma göre yaklaşım 2'deki cevabımda bir düzeltme yaptım. Bu, 2. noktada bahsettiğiniz sözdizimi sorununu giderirse, bu yorumu düzenlemek isteyebilirsiniz. Ya da sorunun ne olduğunu bana bildirin, cevabımı düzeltirim.
crysallus

1
@Crone bu soru 2 yıl önce soruldu
Ondrej Slinták

1
@ OndrejSlinták Ben de dupe olarak kapatmak için oy vermedim, ama FYI: hangisinin önce geldiği önemli değil, " Eğer yeni soru daha iyi bir soru veya daha iyi cevapları varsa, eski soruyu kopya olarak kapatmak için oy verin yenisinin. "
Jeff Puckett

Yanıtlar:


105

Oluşturma sırasında aşağıdakilerle kolayca kullanılabilir:

->add('myfield', 'text', array(
     'label' => 'Field',
     'empty_data' => 'Default value'
))

11
Symfony 2.1 için 'data'anahtarı değiştirmek zorunda kaldım'value'
Edd

175
Bu yalnızca varsayılan bir değer ayarlamakla kalmaz, aynı zamanda değeri herhangi bir bağlam altında zorlar. Ben "varsayılan değer" dediğim gibi değil ...
Hubert Perron

4
Soruna bir çözüm olmadığı için bu çözümü reddettim (Hubert Perron'un yukarıda belirttiği gibi). Bu yazı daha iyi bir çözüm elde etmeye çalışıyorum stackoverflow.com/questions/17986481/…
herrjeh42

13
Bu başlangıç ​​değeri, varsayılan değerempty_data
Pierre de LESPINAY

3
datayararsızdır - kaydedilen değerin üzerine yazar. empty_datadeğeri göstermez, boş değer gönderimi üzerinde kullanır ve denetlenmeyen seçimlerin kaydedilmesini imkansız hale getirir.
moldcraft

115

ile varsayılan değeri ayarlayabilirsiniz empty_data

$builder->add('myField', 'number', ['empty_data' => 'Default value'])

29
Veri ayarı varsayılanı ayarlamıyor. Bu cevap doğru.
Alexei Tenitski

9
Bu, alanı yalnızca değeri olmadan gönderildiğinde 1 olarak ayarlanmış gibi görünür. Hiçbir değer olmadığında formun varsayılan olarak girişte 1 görüntülemesini istediğinizde ne olur?
Brian

Testimde empty_data, boş olarak gönderilen bir alandan varsayılan değeri geçersiz kılmama izin vermiyor, örneğin veritabanına NULL yerine 0 olarak kaydetmek istiyorsanız. Bu hata hala söyleyebildiğim kadarıyla olağanüstü: github.com/symfony/symfony/issues/5906
Chadwick Meyer

63

Bunu geçmişte birkaç kez düşündüm, bu yüzden kullandığım / kullandığım farklı fikirleri not edeceğim. Bir şey işe yarayabilir, ancak hiçbiri "mükemmel" Symfony2 çözümleri değildir.

Oluşturucu Varlıkta $ this-> setBar ('default value'); ancak bu, varlığı her yüklediğinizde (db veya değil) çağrılır ve biraz dağınıktır. Bununla birlikte, tarihler veya ihtiyacınız olan başka şeyler oluşturabildiğiniz için her alan türü için çalışır.

Eğer get içindeki ifadeler yapmazdım, ama yapabilirsin.

return ( ! $this->hasFoo() ) ? 'default' : $this->foo;

Fabrika / örnek . Verilerle önceden doldurulmuş varsayılan bir Varlık sağlayan statik bir işlevi / ikincil sınıfı çağırın. Örneğin

function getFactory() {
    $obj = new static();
    $obj->setBar('foo');
    $obj->setFoo('bar');

   return $obj;
}

Fazladan alanlar eklerseniz bu işlevi sürdürmeniz gerektiği göz önüne alındığında gerçekten ideal değildir, ancak bu, veri ayarlayıcılarını / varsayılanı ayırdığınız ve db'den oluşturulanı anlamına gelir. Benzer şekilde, farklı varsayılan veriler istiyorsanız birden fazla getFactories'iniz olabilir.

Genişletilmiş / Yansıma varlıkları Oluşturma zamanında size (varsayılan olarak) oluşturucu (yapıcı aracılığıyla) veren bir genişletme Varlığı oluşturun (örn. FooCreate Foo'yu genişletir). Fabrika / örnek fikrine sadece farklı bir yaklaşım gibi - statik yöntemleri şahsen tercih ediyorum.

Derleme formundan önce Verileri Ayarlama Yapıcılarda / hizmette, yeni bir varlığınız olup olmadığını veya db'den doldurulduğunu bilirsiniz. Bu nedenle, yeni bir varlık aldığınızda farklı alanlardaki set verilerini çağırmak mantıklıdır. Örneğin

if( ! $entity->isFromDB() ) {
     $entity->setBar('default');
     $entity->setDate( date('Y-m-d');
     ...
}
$form = $this->createForm(...)

Form Olayları Formu oluşturduğunuzda, alanları oluştururken varsayılan verileri ayarlarsınız. Bu kullanım PreSetData olay dinleyicisini geçersiz kılar. Buradaki sorun, form iş yükü / çoğaltma kodunu çoğaltmanız ve bakımını / anlaşılmasını zorlaştırmanızdır.

Genişletilmiş formlar Form olaylarına benzer, ancak bir db / yeni varlık olmasına bağlı olarak farklı türü çağırırsınız. Bu, düzenleme formunuzu tanımlayan FooType'a sahip olduğunuz anlamına gelir, BarType, FooType'ı genişletir ve tüm verileri alanlara ayarlar. Daha sonra kontrol cihazınızda hangi form tipinin tahrik edileceğini seçersiniz. Özel bir temanız olsa da ve olaylar gibi, bu benim beğenme için çok fazla bakım yaratır.

Dal Her alan için ayrı ayrı yaptığınızda değer seçeneğini kullanarak kendi temanızı oluşturabilir ve verileri varsayılan olarak ayarlayabilirsiniz. Şablonlarınızı temiz tutmak ve formu yeniden kullanmak isterseniz, bunu bir form temasına kaydırmanızı engelleyen hiçbir şey yoktur. Örneğin

form_widget(form.foo, {attr: { value : default } });

JS Alanlar boşsa, formu bir JS işleviyle doldurmak önemsiz olacaktır. Örneğin yer tutucularla bir şeyler yapabilirsiniz. Bu kötü, kötü bir fikir.

Hizmet olarak formlar Yaptığım büyük form tabanlı projelerden biri için, tüm formları üreten, tüm işlemleri vb. Yapan bir hizmet oluşturdum. aynı şekilde üretilir / işlenir, farklı şekilde görüntülenir / etkileşime girer (örn. hata yönetimi, yönlendirmeler vb.). Bu yaklaşımın güzelliği, verileri varsayılan olarak kullanabilmeniz, ihtiyacınız olan her şeyi yapabilmeniz, hataları genel olarak ele alabilmeniz vb. Ve bunların hepsi tek bir yerde kapsüllenmiştir.

Sonuç Gördüğüm gibi, tekrar tekrar aynı sayıda sorunla karşılaşacaksınız - varsayılan varsayılan veriler nerede?

  • Eğer db / doktrin düzeyinde saklarsanız, her seferinde varsayılanı saklamak istemezseniz ne olur?
  • Varlık düzeyinde depolarsanız, o varlığı başka hiçbir yerde veri olmadan yeniden kullanmak isterseniz ne olur?
  • Varlık Düzeyinde saklar ve yeni bir alan eklerseniz, önceki sürümlerin düzenleme sonrasında bu varsayılan değere sahip olmasını ister misiniz? Aynı DB için varsayılan gider ...
  • Form düzeyinde saklarsanız, daha sonra kodu korumaya geldiğinizde bu açık mı?
  • Yapıcıdaysa, formu birden çok yerde kullanırsanız ne olur?
  • JS seviyesine iterseniz, çok ileri gittiniz - veriler JS'de sakıncalıdır (ve uyumluluğu, hataları işleme vb. Yok sayıyoruz)
  • Benim gibi birden fazla yerde kullanıyorsanız, bu hizmet harika, ancak bir sitede basit bir ekleme / düzenleme formu için overkill ...

Bu amaçla, soruna her seferinde farklı yaklaştım. Örneğin, bir kayıt formu "bülten" seçeneği formu oluşturmadan hemen önce yapıcıda kolayca (ve mantıksal olarak) ayarlanır. Birbirine bağlı formlar oluştururken (örneğin, farklı form türlerindeki hangi radyo düğmelerinin birbirine bağlandığı) o zaman Olay Dinleyicilerini kullandım. Daha karmaşık bir varlık oluşturduğumda (örneğin, çocuklar veya varsayılan birçok veri gerektiren) Bir öğeyi (örneğin, 'getFactory') kullandığım için ihtiyaç duyduğum bir öğe oluşturdum.

Bu gereksinime sahip olduğum her seferinde biraz farklı olduğu için bir "doğru" yaklaşım olduğunu düşünmüyorum.

İyi şanslar! Umarım size herhangi bir oranda düşünce için yiyecek verdim ve çok fazla uğraşmadım;)


'Tüm formları üreten bir hizmet' hakkında ne demek istediğiniz hakkında biraz daha ayrıntı verebilir misiniz? Şu anda gerçekten form merkezli bir proje üzerinde çalışıyorum ve farklı bakış açılarına sahip olmak harika olurdu.
user2268997

2
doktrin kullanırken, bir varlık db'den yüklendiğinde yapıcılar çağrılmaz.
NDM

43

Varsayılan değeri ayarlamanız gerekiyorsa ve formunuz varlık ile ilgili ise, aşağıdaki yaklaşımı kullanmalısınız:

// buildForm() method
public function buildForm(FormBuilderInterface $builder, array $options) {
    $builder
    ...
    ->add(
        'myField',
        'text',
        array(
            'data' => isset($options['data']) ? $options['data']->getMyField() : 'my default value'
        )
    );
}

Aksi takdirde, myFieldvarlıktan değer almak yerine her zaman varsayılan değere ayarlanır.


Varlıklar yerine diziler durumunda, sadece$options['data']->getMyField()$option['data']['myField']
ggg

3
Bu ekleme / güncelleme için doğru yol olduğunu düşünüyorum. Ama Symfony'dan çok karmaşık hale gelmesinden nefret ediyorum.
Yarco

Tek iyi cevap bu. Dokümana baktığımda başka cevapları anlamıyorum. empty_data: Bu seçenek, gönderilen değer boş olduğunda alanın hangi değeri döndüreceğini belirler. Bir başlangıç ​​değeri belirlemez
Vincent Decaux


16

Formunuz bir varlığa bağlıysa, construct yöntemini kullanarak varlığın kendisinde varsayılan değeri ayarlamanız yeterlidir:

public function __construct()
{
    $this->field = 'default value';
}

Yine de, formunuz varlığınızla eşlenmeyen ek alanlara sahip olabilir ( 'mapped' => false). setData(...)Bunlar için kullanın .
Dizzley

12

Yaklaşım 1 ( http://www.cranespud.com/blog/dead-simple-default-values-on-symfony2-forms/ adresinden )

Varlıktaki varsayılan değeri, değişken bildiriminde veya yapıcıda ayarlamanız yeterlidir:

class Entity {
    private $color = '#0000FF';
    ...
}

veya

class Entity {
    private $color;

    public function __construct(){
         $this->color = '#0000FF';
         ...
    }
    ...
}

Yukarıdaki bağlantıdaki bir yorumdan Yaklaşım 2 ve ayrıca Symfony2'de form alanı için varsayılan değer nasıl ayarlanır?

Dmitriy'nin cevabından uyarlanmış FormBuilder ile alan eklerken veri özniteliğine varsayılan değeri ekleyin.

Bunun, özelliğin yalnızca varolan bir varlık değil, yeni bir değer olduğunda null değerine sahip olacağını ve alacağını varsaydığını unutmayın .

public function buildForm(FormBuilderInterface $builder, array $options) {
    $builder->add('color', 'text', array(
            'label' => 'Color:',
            'data' => (isset($options['data']) && $options['data']->getColor() !== null) ? $options['data']->getColor() : '#0000FF'
        )
    );
}

Birincisi çalışıyor (teşekkürler!), İkincisi (benim için): $ options ["data] her zaman ayarlanır, bu yüzden varsayılan değer asla kullanılmaz. 1 numaralı çözümün amaçlanan yol olup olmadığını hala merak ediyorum yapmak için ...
herrjeh42

Her zaman ayarlanmış $ options ['data'] konusunda haklısınız. Varlık alanını başlatmazsanız, bunun yerine alanda null olup olmadığını test edebilirsiniz, örn. 'data' => $ options ['data'] -> getColor ()! == null? vb ... Bu, null değerinin renk alanı için geçerli bir değer olmadığını varsayar; bu nedenle mevcut varlıklar hiçbir zaman bu alan için null değerine sahip olmaz.
crysallus

ah, aptal bana: 'isset ($ $ options [' data '] -> getColor ())' ile denedim, "bağlamda yazma izin verilmiyor" hakkında bir hata mesajı aldım ve yapmam gerektiğini unuttum farklı kontrol :-)
herrjeh42

1
Aslında veri girişinin ayarlanmadığı durumlar var gibi görünüyor. Hem isset ($ options ['data']) && $ options ['data'] -> getColor ()! == null? ...
crysallus

9

Varsayılan bir değer, örneğin form için şu şekilde ayarlayabilirsiniz message:

$defaultData = array('message' => 'Type your message here');
$form = $this->createFormBuilder($defaultData)
    ->add('name', 'text')
    ->add('email', 'email')
    ->add('message', 'textarea')
    ->add('send', 'submit')
    ->getForm();

Formunuzun bir Varlıkla eşleşmesi durumunda, şu şekilde gidebilirsiniz (örn. Varsayılan kullanıcı adı):

$user = new User();
$user->setUsername('John Doe');

$form = $this->createFormBuilder($user)
    ->add('username')
    ->getForm();

2
Özellikle çoğu uygulamada bir form oluşturduğunuz ve formun ele aldığı bir objeye geçtiğiniz için bu yöntemi tercih ederim.
22'de skrilled

9

Herhangi bir vaka / yaklaşım için, temel olarak sınıfsız bir form kullanarak veya varsayılan değeri ayarlamak için herhangi bir hizmete erişmemiz gerektiğinde genel bir çözüm:

// src/Form/Extension/DefaultFormTypeExtension.php

class DefaultFormTypeExtension extends AbstractTypeExtension
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        if (null !== $options['default']) {
            $builder->addEventListener(
                FormEvents::PRE_SET_DATA,
                function (FormEvent $event) use ($options) {
                    if (null === $event->getData()) {
                        $event->setData($options['default']);
                    }
                }
            );
        }
    }

    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefault('default', null);
    }

    public function getExtendedType()
    {
        return FormType::class;
    }
}

ve form uzantısını kaydedin:

app.form_type_extension:
    class: App\Form\Extension\DefaultFormTypeExtension
    tags:
        - { name: form.type_extension, extended_type: Symfony\Component\Form\Extension\Core\Type\FormType }

Bundan sonra, defaultherhangi bir form alanında seçeneği kullanabiliriz :

$formBuilder->add('user', null, array('default' => $this->getUser()));
$formBuilder->add('foo', null, array('default' => 'bar'));

Bu en iyi cevap (güncel) olarak kabul edilmiş olmalıdır
medunes

7

Kullanmayın:

'data' => 'Default value'

Burayı okuyun: https://symfony.com/doc/current/reference/forms/types/form.html#data

"Veri seçeneği, oluşturma sırasında her zaman etki alanı verilerinden (nesne) alınan değeri geçersiz kılar. Bu, form zaten var olan bir nesneyi düzenlediğinde nesne değerinin de geçersiz kılındığı ve form gönderildiğinde kalıcı değerinin kaybedilmesine neden olduğu anlamına gelir."


Aşağıdakileri kullanın:

Diyelim ki, bu örnek için bir Varlık Foo'unuz var ve varsayılan olarak denetlenmesini istediğiniz bir "etkin" alanı var (bu örnekte CheckBoxType, ancak işlem diğer tüm türlerle aynıdır).

FooFormType sınıfınıza şunları ekleyin:

...
use Symfony\Component\Form\FormEvent;
use Symfony\Component\Form\FormEvents;
...
public function buildForm( FormBuilderInterface $builder, array $options )
{
    ...

    $builder->add('active', CheckboxType::class, array(
        'label' => 'Active',
    ));

    $builder->addEventListener(
        FormEvents::PRE_SET_DATA,
        function(FormEvent $event){                 
            $foo = $event->getData();
            // Set Active to true (checked) if form is "create new" ($foo->active = null)
            if(is_null($foo->getActive())) $foo->setActive(true);
        }
   );
}
public function configureOptions( OptionsResolver $resolver )
{
    $resolver->setDefaults(array(
        'data_class' => 'AppBundle:Foo',
    ));
}

Bu para! Varsayılan değerlerden önce değerlerinizi kontrol etmek için form olay dinleyicisini kullanın. Hem Yeni eylemler hem de Düzenleme eylemleri için çalıştığından, bu, formlarınızdaki varsayılan değerler için kabul edilen yanıt olmalıdır.
tlorens

Bunu ele almanın doğru yolu budur ve kabul edilen cevap bu olmalıdır.
Bettinz

Koşullu / üçlü kullanıyorsanız, başlangıçta bahsettiğiniz şey doğru değildir. 'data' => $data['myfield'] ?? 'Default value'
Şunun

6
->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) {
     $form = $event->getForm(); 
     $data = $event->getData(); 

     if ($data == null) {
         $form->add('position', IntegerType::class, array('data' => 0));
     }

});

bu güzel bir çözüm. $event->setData()Alanı okumak yerine aramak onu daha da iyi hale getirebilir.
user2268997

5

Çözümüm:

$defaultvalue = $options['data']->getMyField();
$builder->add('myField', 'number', array(
            'data' => !empty($defaultvalue) ? $options['data']->getMyField() : 0
        )) ;

4

Sorunu anlıyorum.

Varlığınızdaki verilere göre formun oluşturulma şeklini ayarlamak istiyorsunuz. Varlık oluşturuluyorsa, bazı varsayılan değerler kullanın. Varlık varsa, veritabanı değerini kullanın.

Şahsen, @ MolecularMans'ın çözümü gitmenin yolu olduğunu düşünüyorum. Aslında yapıcı veya özellik deyimi varsayılan değerleri ayarlamak. Ama siz bu yaklaşımı sevmiyorsunuz.

Bunun yerine şunu takip edebilirsiniz : http://symfony.com/doc/current/cookbook/form/dynamic_form_modification.html

Bir dinleyiciyi form türünüze asarsınız ve sonra varlığınızı inceleyebilir ve oluşturucu-> add ifadelerini yeni veya mevcut bir varlığa sahip olacak şekilde buna göre ayarlayabilirsiniz. Dinleyicinizde yalnızca kodlayabilseniz de, varsayılan değerlerinizi bir yerde belirtmeniz gerekir. Veya bunları form türüne iletin.

Yine de çok iş gibi görünüyor. Varlığı, önceden ayarlanmış varsayılan değerleri ile forma geçirmek daha iyidir.


4

FormBuilderFormu oluşturmak için bir symfony 2.7 içinde kullanıyorsanız , ilk verileri createFormBuilderDenetleyici yöntemine de iletebilirsiniz

$values = array(
    'name' => "Bob"
);

$formBuilder = $this->createFormBuilder($values);
$formBuilder->add('name', 'text');

3

Genellikle, form i varsayılan değerleri için fikstür kullanın. Çünkü bu şekilde en kolay değil, çok rahat.

Misal:

class LoadSurgeonPlanData implements FixtureInterface
{
    public function load(ObjectManager $manager)
    {
        $surgeonPlan = new SurgeonPlan();

        $surgeonPlan->setName('Free trial');
        $surgeonPlan->setPrice(0);
        $surgeonPlan->setDelayWorkHours(0);
        $surgeonPlan->setSlug('free');

        $manager->persist($surgeonPlan);
        $manager->flush();        
    }   
}

Ancak, symfony tipi alanında seçenek verileri vardır .

Misal

$builder->add('token', 'hidden', array(
    'data' => 'abcdef',
));

3

Çok basit bir yol var, varsayılanları burada ayarlayabilirsiniz:

$defaults = array('sortby' => $sortby,'category' => $category,'page' => 1);

$form = $this->formfactory->createBuilder('form', $defaults)
->add('sortby','choice')
->add('category','choice')
->add('page','hidden')
->getForm();

3

Oluşturma formunuzda 'veri' ayarlarsanız, varlığınız düzenlenirken bu değer değiştirilmez.

Benim çözümüm:

public function buildForm(FormBuilderInterface $builder, array $options) {
    // In my example, data is an associated array
    $data = $builder->getData();

    $builder->add('myfield', 'text', array(
     'label' => 'Field',
     'data' => array_key_exits('myfield', $data) ? $data['myfield'] : 'Default value',
    ));
}

Hoşçakal.


Kabul edilen bir cevaptan çok daha yararlı! PHP7 + kullanıyorsanız, bunu daha da düzgün yapabilirsiniz:'data' => $data['myfield'] ?? 'Default value',
Boykodev

Array_key_exists () işlevinde bir yazım hatası var
Deadpool

1

Varsayılan değerler, ilgili varlık yapılandırılarak ayarlanır. Varlığı forma bağlamadan önce renk alanını "# 0000FF" olarak ayarlayın:

// controller action
$project = new Project();
$project->setColor('#0000FF');
$form = $this->createForm(new ProjectType(), $project);

bu yaklaşım işe yarar, ancak form sınıfını her kullandığınızda bunu yapmanız gereken dezavantaja sahiptir ve çok ayrıntılıdır (birçok set deyimi). Form bileşeni çok zarif olduğu için başka bir şey olmalı. Ama yine de teşekkürler :-)
herrjeh42

@ jamie0726 Bence, yeni veya getirildiğinde nesnenin değerlerini ayarlamak denetleyicinin sorumluluğundadır. Bu şekilde, formun farklı davranışlarla farklı durumlarda kullanılmasını sağlayabilirsiniz, örneğin, kullanıcının bir yöneticisi veya bir süpermen rolü olduğu için yeni renk değişebilir ve bu bir iş mantığı olduğundan, denetleyici veya hizmet değil, formu. Cerad'ın belirttiği gibi ben de bu çözümü tercih ediyorum. Bu varsayılan değerleri ayarlamak için her zaman bir hizmet oluşturabilirsiniz ve denetleyicide bu hizmeti KURU tutma özelliğini kullanabilirsiniz.
saamorim

Seçtiğim çözüm bu, çünkü bence mantığa uyuyor. Oluşturulan denetleyicilerin EDIT ve CREATE formları oluşturmak için farklı yöntemleri vardır ve bunlar yeni varlık için varsayılan / başlangıç ​​verilerini ayarladığım yerlerdir.
alumi

1

Bu alan bir varlığa bağlıysa (o varlığın bir özelliğiyse) bunun için varsayılan bir değer belirleyebilirsiniz.

Bir örnek:

public function getMyField() {
    if (is_null($this->MyField)) {
        $this->setMyField('my default value');
    }
    return $this->MyField;
}

1

Genellikle varlığımdaki belirli bir alan için varsayılan değeri ayarladım:

/**
 * @var int
 * @ORM\Column(type="integer", nullable=true)
 */
protected $development_time = 0;

Bu, yeni kayıtlar için veya yalnızca mevcut kayıtlar güncelleniyorsa işe yarar.


'empty_data'Varlık üzerindeki yapıcı parametrelerine izin vermek için bir geri çağırma kullanıldığında bu işe yaramıyor gibi görünüyor .
NDM

1

Brian'ın dediği gibi:

empty_data yalnızca değeri olmadan gönderildiğinde alanı 1 olarak ayarlamış gibi görünür. Hiçbir değer olmadığında formun varsayılan olarak girişte 1 görüntülemesini istediğinizde ne olur?

ile varsayılan değeri ayarlayabilirsiniz empty_value

$builder->add('myField', 'number', ['empty_value' => 'Default value'])

0

Ben ekleyerek, bu sorunu çözmüş değeri de attr :

->add('projectDeliveringInDays', null, [
    'attr' => [
          'min'=>'1',
          'value'=>'1'
          ]
     ])
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.