[yii2] Membuat Form Login dengan Captcha

Menambahkan captcha ke form login cukup mudah dan dapat dilakukan dalam tiga langkah:

  1. Pada models/LoginForm.php Anda harus menambahkan field captcha dan rules validasi.
  2. Dalam views/site/login.php Anda harus manampilkan field captcha.
  3. Pada controllers/SiteController.php Anda harus menambahkan captcha action.

Dalam tutorial ini, saya ingin menunjukkan kepada Anda cara membuat captcha di form login, tetapi Anda dapat menambahkan captcha ke form apa pun dengan mengikuti langkah-langkah ini.

1. Menambahkan field captcha dan rules validasi pada models/LoginForm.php

Pertama-tama Anda perlu mengubah form login seperti yang dijelaskan di atas. Kemudian, Anda harus menambahkan properti publik bernama verifyCode dan rules validasinya.

class LoginForm extends Model
{
	.............
	.............
    public $verifyCode;
	.............

    public function rules()
    {
        return [
            .............
            .............

            ['verifyCode', 'required'],
            ['verifyCode', 'captcha'],
			
            .............
            .............
        ];
    }
	.............
	.............	
}

2. Menambahkan widget pada views/site/login.php

.............
.............

<div class="site-login">
	.............
	.............

    <div class="row">
        <div class="col-lg-5">
            <?php $form = ActiveForm::begin(['id' => 'login-form']); ?>

				.............
				.............

				<?= $form->field($model, 'verifyCode')->widget(\yii\captcha\Captcha::class) ?>

				.............
				.............
	
            <?php ActiveForm::end(); ?>
        </div>
    </div>
</div>

3. Menambahkan action pada controller/SiteController.php

Agar captcha berfungsi, Anda harus menambahkan action captcha ke controllers/SiteController.php. Mungkin action tersebut sudah ada karena templat aplikasi Yii2 standar menambahkannya secara otomatis.

.............
.............

class SiteController extends Controller
{
	.............
	.............
	
    public function actions()
    {
        return [
			.............
			.............
			
            'captcha' => [
                'class' => 'yii\captcha\CaptchaAction',
            ],
			.............
			.............
        ];
    }
	
	.............
	.............	
}

Artikel Terbaru