Penamaan penghalaan dalam Symfony 6 menggunakan pengawal dari direktori dalaman
P粉511749537
P粉511749537 2024-03-26 16:27:48
0
1
454

Saya mengalihkan semua pengawal ke /src/Web/Controller dalam projek Symfony 6 saya seperti yang ditunjukkan di bawah

├── src
│   ├── ...
│   └── Web
│   |    ├── Controller
│   |    ├── ....
|   |── Kernel.php

Saya routes.yamldiubah suai sewajarnya

#routes.yaml
controllers:
    resource: ../src/Web/Controller/
    type: annotation

Sekarang masalahnya ialah semua laluan saya mempunyai nama yang diawali dengan app_web. Saya rasa ia disebabkan oleh struktur ini.

$ php bin/console debug:router Output arahan adalah seperti berikut:

...
...
app_web_post_index    GET|HEAD        ANY      ANY    /post/             
app_web_post_create   GET|HEAD|POST   ANY      ANY    /post/create

Di sini saya hanya mahu nama itu sahaja post_index Bagaimana hendak membuang awalan ini?

P粉511749537
P粉511749537

membalas semua(1)
P粉011684326

Jika anda tidak menamakan laluan secara eksplisit, mereka akan menamakannya untuk anda.

Nama dijana menggunakan nama kelas dan kaedah pengawal yang layak sepenuhnya (walaupun atas sebab tertentu tiada bahagian terakhir ruang nama - controller).

Jika anda tidak mahu menggunakan nama yang dijana secara automatik, cuma namakan laluan anda sendiri:

#[Route('/post')]
class Post
{
    #[Route(path: '/', name: 'post_index', methods: ['HEAD', 'GET'])]
    public function index(Request $request): Response
    {
        return new Response('post index');
    }

    #[Route(path: '/create', name: 'post_create', methods: ['HEAD', 'GET', 'POST'])]
    public function create(Request $request): Response
    {
        return new Response('post create');
    }
}

Menggunakan pilihan terbina dalam anda boleh menambah awalan pada set laluan, tetapi jangan keluarkannya daripada nama yang dijana secara automatik.

Jika ini benar-benar penting untuk kes penggunaan anda berlaku "secara automatik", saya rasa anda boleh membina pemuat laluan anda sendiri, tetapi saya akan katakan itu agak berlebihan. Namakan laluan dengan betul atau gunakan nama yang dijana secara automatik.


Menamakan laluan secara eksplisit biasanya merupakan idea/amalan yang lebih baik kerana jika anda merujuk nama laluan di tempat lain, nama itu dijamin kekal sama walaupun anda memilih untuk memfaktorkan semula pengawal ke dalam struktur kod yang berbeza.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan