Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menggunakan borang dan pengesahan dalam rangka kerja Nette?

Bagaimana untuk menggunakan borang dan pengesahan dalam rangka kerja Nette?

WBOY
WBOYasal
2023-06-04 15:51:031191semak imbas

Rangka kerja Nette ialah rangka kerja ringan untuk pembangunan web PHP Ia dialu-alukan dan digunakan secara meluas untuk kesederhanaan, kemudahan penggunaan, kecekapan dan kestabilannya. Apabila membangunkan aplikasi web, penggunaan borang dan pengesahan adalah keperluan yang tidak dapat dielakkan. Artikel ini akan memperkenalkan cara menggunakan borang dan pengesahan dalam rangka kerja Nette.

1. Pembinaan borang
Dalam rangka kerja Nette, borang boleh dibuat melalui kelas Borang. Kelas Borang berada dalam ruang nama NetteForms dan boleh diperkenalkan melalui kata kunci penggunaan.

use NetteFormsForm;

Sintaks asas untuk mencipta borang adalah seperti berikut:

$form = new Form();

Sebagai contoh, kita boleh mencipta borang log masuk yang mengandungi kotak input untuk nama pengguna dan kata laluan.

$form = new Form();
$form->addText('username', '用户名:')
     ->setRequired('请输入用户名!');
$form->addPassword('password', '密码:')
     ->setRequired('请输入密码!');
$form->addSubmit('submit', '登录');

Kod di atas menggunakan kaedah addText() dan kaedah addPassword() untuk mencipta kotak input nama pengguna dan kata laluan Parameter pertama ialah nama kotak input, dan parameter kedua ialah label daripada kotak input. Kaedah setRequired() boleh menetapkan sama ada kotak input diperlukan.

2. Output borang
Kita boleh menggunakan kaedah $form->render() untuk mengeluarkan borang ke dalam paparan. Seperti yang ditunjukkan di bawah:

$form = new Form();
...
echo $form->render();

Jika anda ingin mengeluarkan setiap kotak input secara individu dalam paparan, anda boleh menggunakan sintaks berikut:

echo $form['username']->getControl();
echo $form['password']->getControl();
echo $form['submit']->getControl();

3. Pemprosesan borang
Penyerahan borang boleh dilakukan melalui POST Atau kaedah GET mencetuskan pemprosesan. Dalam rangka kerja Nette, anda boleh menggunakan kaedah handleRequest() untuk mengendalikan operasi selepas penyerahan borang. Sebagai contoh, kita boleh menulis kod berikut untuk memproses borang log masuk di atas:

$form = new Form();
...
if ($form->isSubmitted() && $form->isValid()) {
    // 处理表单数据
    $values = $form->getValues();
    $username = $values['username'];
    $password = $values['password'];
    // 验证用户名密码是否正确
    ...
}
echo $form->render();

Sebelum memproses data borang, kita perlu menggunakan kaedah isSubmitted() untuk menentukan sama ada borang telah diserahkan dan menggunakan kaedah isValid() untuk menentukan sama ada borang itu sah. Jika borang itu sah, anda boleh mendapatkan data dalam borang melalui kaedah getValues() dan memprosesnya dengan sewajarnya.

4. Pengesahan borang
Dalam pembangunan sebenar, pengesahan data borang adalah pautan yang sangat penting. Dalam rangka kerja Nette, pengesahan borang boleh dilaksanakan melalui kaedah addRule(). Sebagai contoh, kita boleh menambah peraturan pengesahan berikut pada borang log masuk di atas: Kaedah

$form->addText('username', '用户名:')
     ->setRequired('请输入用户名!');
$form->addPassword('password', '密码:')
     ->setRequired('请输入密码!');
$form->addSubmit('submit', '登录');
...
$form['username']->addRule(Form::MAX_LENGTH, '用户名不能超过50个字符!', 50);
$form['password']->addRule(Form::MIN_LENGTH, '密码至少需要输入6个字符!', 6);

addRule() menerima tiga parameter, iaitu nama peraturan, mesej ralat peraturan dan parameter peraturan. Nama peraturan dan parameter peraturan disediakan oleh rangka kerja Nette. Lebih banyak peraturan boleh dilihat dalam dokumentasi rangka kerja Nette.

Selain menggunakan peraturan yang disediakan oleh rangka kerja Nette, kami juga boleh menggunakan peraturan tersuai. Sebagai contoh, kami boleh menetapkan peraturan untuk kotak input kata laluan untuk menghendaki kata laluan tidak boleh mengandungi nama pengguna:

$form['password']->addRule(function ($password, $username) {
    return stripos($password, $username) === false;
}, '密码不能包含用户名!', $form['username']->getValue());

Dalam kod di atas, kami mentakrifkan fungsi tanpa nama sebagai peraturan dan menyerahkan nama pengguna kepada fungsi ini . Dalam fungsi tersebut, kita boleh menggunakan fungsi stripos() untuk mencari sama ada kata laluan mengandungi nama pengguna.

5. Paparan output borang dan keputusan pengesahan
Selepas borang diserahkan, pengguna perlu melihat output borang dan hasil pengesahan yang sepadan. Dalam rangka kerja Nette, kita boleh mengeluarkan borang dengan memanggil kaedah echo $form->render() dalam paparan. Pada masa yang sama, dengan memanggil kaedah echo $form->getMessages() dalam paparan, mesej gesaan hasil pengesahan borang boleh dikeluarkan. Sebagai contoh, kita boleh meletakkan kod yang mengeluarkan borang dan keputusan pengesahan borang dalam paparan yang sama:

<form method="post">
    <?php echo $form['username']->getControl(); ?><br>
    <?php echo $form['password']->getControl(); ?><br>
    <?php echo $form['submit']->getControl(); ?>
</form>
<?php
if ($form->isSubmitted() && !$form->isValid()) {
    echo $form->getMessages();
}
?>

Dalam kod di atas, kami mula-mula mengeluarkan borang, dan kemudian menentukan sama ada borang diserahkan, dan jika ia tidak sah, , kemudian keluarkan maklumat segera hasil pengesahan borang.

6. Ringkasan
Menggunakan borang dan pengesahan adalah salah satu keperluan asas dalam pembangunan web. Dalam rangka kerja Nette, kita boleh mencipta borang melalui kelas Borang dan melaksanakan pengesahan borang melalui kaedah addRule(). Menggunakan peraturan pengesahan dan peraturan tersuai yang disediakan oleh rangka kerja Nette, anda boleh mengesahkan data borang dengan mudah. Dalam paparan, kami boleh mengeluarkan borang melalui kaedah echo $form->render() dan mengeluarkan maklumat segera hasil pengesahan borang melalui kaedah echo $form->getMessages().

Atas ialah kandungan terperinci Bagaimana untuk menggunakan borang dan pengesahan dalam rangka kerja Nette?. 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