Rumah  >  Soal Jawab  >  teks badan

"Sila isikan medan ini" dan bukannya mesej ralat tersuai |

Hai, saya mempunyai borang Symfony 5 dengan kekangan pada medan saya, kekangan saya pada panjang berfungsi dengan baik, tetapi NotBlank tidak betul. Saya mempunyai medan "jenis" dan "label" dan saya sedang menguji borang dan kekangan "jenis", jika saya mengesahkan borang dengan "jenis" kosong ia memaparkan mesej penyemak imbas lalai "Sila isi medan ini" dan saya Ingin mempunyai mesej tersuai yang ditakrifkan dalam entiti untuk kekangan "NotBlank".

Saya rasa masalahnya disebabkan oleh "diperlukan => benar" kerana jika saya menukarnya kepada "salah" dan menambah "empty_data => ''" ia berfungsi dan saya boleh melihat mesej penyesuaian saya, tetapi tidak betul-betul kerana dalam borang ubah suai saya jika saya mengosongkan medan "jenis" dan mengesahkannya ia akan muncul dengan mesej berikut: Jenis parameter yang dijangkakan "rentetan" diberikan pada laluan harta "jenis" "null".

Saya menggunakan Symfony 5, Bootstrap 5, berikut ialah entiti saya, borang ranting saya dan FormType.php

saya

Entiti

/**
     * @ORM\Column(type="string", length=255)
     * @Assert\Length(
     *      min = 2,
     *      max = 50,
     *      minMessage = "Le type doit faire au minimum {{ limit }} caractères",
     *      maxMessage = "Le type doit faire au maximum {{ limit }} caractères"
     * )
     * @Assert\NotBlank(
     *      message = "Le type est un champ obligatoire"
     * )
     */
    private $type;

Bentuk dahan pokok

{{ form_start(form) }}
    <div class="container-card-global mb-5">
        <div class="form-field">
            {{form_label(form.type)}}
            {{form_errors(form.type)}}
            {{form_widget(form.type)}}
        </div>

        <div class="form-field">
            {{form_label(form.description)}}
            {{form_widget(form.description)}}
            {{form_errors(form.description)}}
        </div>

        <div class="form-field">
            {{form_label(form.statut)}}
            {{form_widget(form.statut)}}
        </div>


        <div class="text-center">
            <button class="btn btn-save-global">{{ button_label|default('Valider') }}</button>
        </div>
    </div>
{{ form_end(form) }}

formtype.php

$builder
            ->add('type', TextType::class, [
                'required' => true,
                'label' => 'Type',
            ])

Tolong bantu!

Saya menyemak beberapa forum dan saya cuba menggunakan "novalidate" tetapi ia mengembalikan mesej ralat yang sama, saya benar-benar mahu mengekalkan "diperlukan => benar" dan berjaya mendapatkan mesej tersuai saya "Medan ini tidak boleh kosong" .

P粉877719694P粉877719694185 hari yang lalu321

membalas semua(1)saya akan balas

  • P粉360266095

    P粉3602660952024-03-23 09:28:13

    Anda mengelirukan ralat bahagian pelayan dengan ralat bahagian hadapan. Apabila anda menulis required => true 时,它会将 html 属性 required digunakan pada elemen input anda. https://www.w3schools.com/tags/tryit.asp?filename=try html5_input_required

    Inilah sebabnya anda melihat ralat penyemak imbas lalai. Jika anda ingin mencubanya, anda boleh menggunakan F12 untuk memeriksa teg html yang dimasukkan dan mengalih keluar apa yang anda perlukan.

    Kemudian. Jika anda berjaya menghantar borang (menghantar data ke pelayan). Symfony akan menggunakan kekangannya sendiri (penegasan anda).

    Sebab itu borang anda menunjukkan ralat dengan betul, kerana anda menggunakan fungsi ini pada setiap entri borang form_errors.

    Tetapi dalam kes ini, ralat yang anda lihat dikembalikan daripada pelayan. Ia bukan ralat penyemak imbas.

    Tidak kira apa pun, menyimpan required => true bagus untuk UX (pengalaman pengguna). Untuk pengalaman pengguna yang lengkap, hanya menunjukkan ralat "dinamik" adalah perkara yang baik. Ia menghalang pengguna daripada dipaksa untuk melakukan sebelum mereka tahu mereka telah melakukan kesilapan.

    Tetapi kekangan Symfony juga melindungi perkara yang boleh diserahkan oleh seseorang supaya anda tidak mendaftarkan data yang tidak lengkap. Anda boleh menganggapnya sebagai "Tembok Cina". Satu perkara terakhir untuk menayangkan data projek anda.

    balas
    0
  • Batalbalas