Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk menggunakan komponen borang dalam rangka kerja Symfony?

Bagaimana untuk menggunakan komponen borang dalam rangka kerja Symfony?

WBOY
WBOYasal
2023-06-03 09:11:001366semak imbas

Komponen borang dalam rangka kerja Symfony ialah alat yang sangat berguna yang boleh membantu kami membuat dan mengesahkan borang dengan mudah serta berinteraksi dengan pangkalan data. Dalam artikel ini, kami akan memperkenalkan cara menggunakan komponen borang dalam rangka kerja Symfony.

1. Pasang rangka kerja Symfony
Sebelum memulakan, kita perlu memastikan bahawa rangka kerja Symfony telah dipasang dan kebergantungan dikonfigurasikan. Jika anda belum memasang Symfony, anda boleh memasangnya di terminal melalui arahan berikut:

$ curl -sS https://get.symfony.com/cli/installer | bash
$ sudo mv /home/your_user/.symfony/bin/symfony /usr/local/bin/symfony

2. Buat kelas borang
Pertama, kita perlu mencipta kelas borang, yang akan digunakan untuk mencipta medan borang dan mengesahkan data Serta mengikat data borang kepada objek entiti. Dalam Symfony, kelas borang biasanya disimpan dalam Borang/ direktori dan berakhir dengan Borang. Berikut ialah contoh kelas borang yang ringkas:

use SymfonyComponentFormAbstractType;
use SymfonyComponentFormFormBuilderInterface;
use SymfonyComponentFormExtensionCoreTypeTextType;
use SymfonyComponentFormExtensionCoreTypeSubmitType;
use SymfonyComponentOptionsResolverOptionsResolver;

class ContactFormType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('name', TextType::class)
            ->add('email', TextType::class)
            ->add('message', TextType::class)
            ->add('submit', SubmitType::class)
        ;
    }

    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults([
            'data_class' => AppEntityContact::class,
        ]);
    }
}

Dalam kelas borang ini, kami mula-mula mengimport kelas yang diperlukan oleh komponen borang. Seterusnya, kami menambah medan borang dalam fungsi buildForm(). Untuk setiap medan, kita perlu menentukan nama medan, jenis medan dan pilihan lain (seperti label dan diperlukan). Akhirnya, kami menambah butang hantar. Fungsi

configureOptions() digunakan untuk mengkonfigurasi pilihan data, seperti kelas data dan nama borang.

3 Cipta templat borang
Setelah kelas borang dibuat, kita boleh mula mencipta templat borang. Templat borang disimpan dalam direktori templat/ dan berakhir dengan .html.twig. Berikut ialah contoh templat borang ringkas:

{% extends 'base.html.twig' %}

{% block body %}
    <h1>Contact Form</h1>

    {{ form_start(form) }}
        {{ form_errors(form) }}

        {{ form_row(form.name) }}
        {{ form_row(form.email) }}
        {{ form_row(form.message) }}

        {{ form_row(form.submit) }}
    {{ form_end(form) }}
{% endblock %}

Dalam templat ini, kami mula-mula memanjangkan templat base.html.twig dan kemudian menambah penanda borang dalam blok badan dan memaparkan sebarang ralat borang. Kami kemudiannya memberikan setiap medan borang satu demi satu menggunakan fungsi form_row(). Akhirnya, kami membentangkan butang hantar.

4. Cipta pengawal borang
Sekarang kita perlu mencipta pengawal untuk mengendalikan operasi borang. Dalam Symfony, pengawal biasanya disimpan dalam direktori src/Controller/ dan berakhir dengan Controller. Berikut ialah contoh pengawal mudah:

use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationRequest;
use SymfonyComponentHttpFoundationResponse;

class ContactController extends AbstractController
{
    public function index(Request $request)
    {
        $form = $this->createForm(ContactFormType::class);

        $form->handleRequest($request);

        if ($form->isSubmitted() && $form->isValid()) {
            $contact = $form->getData();

            $entityManager = $this->getDoctrine()->getManager();
            $entityManager->persist($contact);
            $entityManager->flush();

            return $this->redirectToRoute('contact_success');
        }

        return $this->render('contact/index.html.twig', [
            'form' => $form->createView(),
        ]);
    }

    public function success()
    {
        return new Response('Thanks for contacting us!');
    }
}

Dalam pengawal ini, kita mula-mula menggunakan fungsi createForm() untuk mencipta objek borang baharu, dan kemudian menggunakan fungsi handleRequest() untuk memproses data borang yang diserahkan. Jika borang diserahkan dan sah, ikat data ke dalam objek entiti baharu. Seterusnya, kami menggunakan fungsi getDoctrine() untuk mendapatkan pengurus entiti, menyimpan objek entiti ke pangkalan data, dan kemudian ubah hala ke halaman kejayaan. Jika borang tidak diserahkan atau tidak sah, templat borang akan diberikan.

5 Cipta laluan
Akhir sekali, kita perlu menentukan laluan untuk menunjukkan bila borang itu diberikan dan bila ia diserahkan. Dalam Symfony, laluan biasanya disimpan dalam fail config/routes.yaml. Berikut ialah contoh definisi laluan mudah:

contact:
  path: /contact
  controller: AppControllerContactController::index
  methods: [GET, POST]

contact_success:
  path: /contact/success
  controller: AppControllerContactController::success

Dalam fail laluan ini, kami mentakrifkan dua laluan. Laluan pertama mentakrifkan pemaparan dan penyerahan borang, laluannya ialah /contact, menggunakan kaedah GET dan POST, dan pengawalnya ialah AppControllerContactController::index. Laluan kedua mentakrifkan paparan halaman kejayaan, laluannya ialah /contact/success, dan pengawalnya ialah AppControllerContactController::success.

6 Menggunakan borang
Sekarang kita telah mencipta kelas borang, templat borang, pengawal dan laluan, kita boleh menggunakan borang tersebut. Untuk menggunakan borang, hanya akses laluan yang ditentukan. Dalam contoh ini, laluan borang kami ialah http://localhost:8000/contact.

Dalam halaman borang, kami boleh memasukkan sebarang maklumat hubungan yang sah dan klik butang hantar. Jika data yang dimasukkan adalah sah, data yang dimasukkan akan disimpan dalam pangkalan data dan mesej "Terima kasih kerana menghubungi kami!" Jika data yang dimasukkan tidak sah, mesej ralat yang sesuai dipaparkan.

Ringkasan
Komponen borang ialah komponen yang sangat penting dalam rangka kerja Symfony. Ia boleh membantu kami membuat dan mengesahkan borang dengan mudah dan berinteraksi dengan pangkalan data. Dalam artikel ini, kami telah memperkenalkan cara menggunakan komponen borang dalam rangka kerja Symfony, termasuk proses mencipta kelas borang, templat borang, pengawal dan laluan serta menggunakan borang. Saya harap artikel ini membantu anda dan boleh mencipta pengalaman pengguna yang lebih baik apabila membangunkan aplikasi Symfony.

Atas ialah kandungan terperinci Bagaimana untuk menggunakan komponen borang dalam rangka kerja Symfony?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn