Wednesday , 18 October 2017
Home » Tutorial » Buat Form Pendaftaran User Di Yii Framework 2.0
Buat Form Pendaftaran User Di Yii Framework 2.0

Buat Form Pendaftaran User Di Yii Framework 2.0

Dibaca : 2784

Setelah berhasil menginstall dan login dengan menggunakan database, selanjutnya kita buat Form Pendaftaran User dengan tahapan sebagai berikut.

Pertama kita buat database berikut ini :

 -- phpMyAdmin SQL Dump
-- version 4.2.11
-- http://www.phpmyadmin.net
--
-- Host: 127.0.0.1
-- Generation Time: May 02, 2015 at 10:39 AM
-- Server version: 5.6.21
-- PHP Version: 5.6.3

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

--
-- Database: `yii2dasar`
--

-- --------------------------------------------------------

--
-- Table structure for table `atasan`
--

CREATE TABLE IF NOT EXISTS `atasan` (
`id_atasan` varchar(18) NOT NULL,
`nama_atasan` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Dumping data for table `atasan`
--

INSERT INTO `atasan` (`id_atasan`, `nama_atasan`) VALUES
('195608011986011002', 'Drs. H.L.Supardan, MM.'),
('195812191989031003', 'H. Lalu Jama''an, B.Sc.'),
('196012161986031014', 'Ir. Nasrun, MM.'),
('196312311986111068', 'H.Nursiah, S.Sos.M.Si.'),
('196312311993031151', 'H. Wiji, ST.'),
('196607061993031015', 'Drs. M. Zarkasi'),
('197410111994022001', 'Sudiati, S.Sos.');

-- --------------------------------------------------------

--
-- Table structure for table `bagian`
--

CREATE TABLE IF NOT EXISTS `bagian` (
`id_bagian` int(11) NOT NULL,
`nama_bagian` varchar(100) NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;

--
-- Dumping data for table `bagian`
--

INSERT INTO `bagian` (`id_bagian`, `nama_bagian`) VALUES
(1, 'Bagian AP dan ULP'),
(2, 'Bagian Organisasi');

-- --------------------------------------------------------

--
-- Table structure for table `skpd`
--

CREATE TABLE IF NOT EXISTS `skpd` (
`id_skpd` varchar(50) NOT NULL,
`nama_skpd` varchar(350) NOT NULL,
`nama_singkat` varchar(100) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

--
-- Dumping data for table `skpd`
--

INSERT INTO `skpd` (`id_skpd`, `nama_skpd`, `nama_singkat`) VALUES
('1.20.14.', 'Kantor Camat Praya Timur', 'Pratim'),
('1.20.13.', 'Kantor Camat Praya Barat Daya', 'Prabardaya'),
('1.20.12.', 'Kantor Camat Praya Barat', 'Prabar'),
('1.20.11.', 'Kantor Camat Praya Tengah', 'Prateng'),
('1.20.10.', 'Kantor Camat Praya', 'Praya'),
('1.20.09.', 'Badan Kepegawaian Daerah', 'BKD'),
('1.20.08.', 'Badan Penanaman Modal & Pelayanan Perijinan Terpadu', 'BPMP2T'),
('1.20.07.', 'Dinas Pendapatan Daerah', 'Dispenda'),
('1.20.05.', 'Inspektorat Daerah', 'Inspektorat'),
('1.20.04.', 'Sekretariat DPRD', 'Set DPRD'),
('1.20.03.', 'Sekretariat Daerah', 'Setda'),
('1.19.03.', 'Badan Penanggulangan Bencana Daerah', 'BPBD'),
('1.19.02.', 'Satuan Polisi Pamong Praja', 'Satpol PP'),
('1.19.01.', 'Badan Kesatuan Bangsa dan Politik', 'Bakesbangpol'),
('1.17.01.', 'Dinas Kebudayaan dan Pariwisata', 'Disbudpar'),
('1.15.01.', 'Dinas Koperasi, UKM, Perindustrian dan Perdagangan', 'Diskop UKM Perindag'),
('1.13.01.', 'Dinas Sosial, Tenaga Kerja dan Transmigrasi', 'Disostektrans'),
('1.12.01.', 'Badan Pemberdayaan Perempuan dan KB', 'BP2KB'),
('1.10.01.', 'Dinas Kependudukan dan Pencatatan Sipil', 'Disduk Capil'),
('1.08.01.', 'Kantor Lingkungan Hidup', 'KLH'),
('1.07.01.', 'Dinas Perhubungan, Komunikasi dan Informatika', 'Dishubkominfo'),
('1.06.01.', 'Badan Perencanaan dan Pembangunan Daerah', 'Bappeda'),
('1.03.01.', 'Dinas Pekerjaan Umum dan ESDM', 'DPU & ESDM'),
('1.02.02.', 'Rumah Sakit Umum Daerah', 'RSUD Praya'),
('1.02.01.', 'Dinas Kesehatan', 'Dikes'),
('1.01.01.', 'Dinas Pendidikan, Pemuda dan Olahraga', 'Dikpora'),
('1.20.15.', 'Kantor Camat Pujut', 'Pujut'),
('1.20.16.', 'Kantor Camat Janapria', 'Janapria'),
('1.20.17.', 'Kantor Camat Kopang', 'Kopang'),
('1.20.18.', 'Kantor Camat Batukliang', 'Batukliang'),
('1.20.19.', 'Kantor Camat Batukliang Utara', 'Batukliang Utara'),
('1.20.20.', 'Kantor Camat Pringgarata', 'Pringgarata'),
('1.20.21.', 'Kantor Camat Jonggat', 'Jonggat'),
('1.22.01.', 'Badan Pemberdayaan Masyarakat dan Desa', 'BPMD'),
('1.24.01.', 'Kantor PDE, Arsip dan Dokumentasi Daerah', 'KPDE Ardok'),
('2.01.01.', 'Dinas Pertanian dan Peternakan', 'Dipertanak'),
('2.01.02.', 'Badan Ketahanan Pangan dan Pelaksana Penyuluhan', 'BKP3'),
('2.02.01.', 'Dinas Kehutanan dan Perkebunan', 'Dihutbun'),
('2.05.01.', 'Dinas Kelautan dan Perikanan', 'Dislutkan'),
('3.00.01.', 'Pengadilan Negeri Praya', 'PN Praya'),
('3.00.02.', 'Polres Lombok Tengah', 'Polres Loteng'),
('3.00.03.', 'MTsN Janapria', 'MTsN Janapria'),
('3.00.04.', 'Ponpes Bagu', 'Ponpes Bagu'),
('3.00.05.', 'Kantor Pengadilan Agama', 'Kantor PA'),
('3.00.06.', 'Badan Pusa Statistik', 'BPS'),
('3.00.07.', 'Badan Pertanahan Nasional', 'BPN Loteng'),
('3.00.08.', 'Pemkab. Sumbawa', 'Pemkab. Sumbawa');

--
-- Indexes for dumped tables
--

--
-- Indexes for table `atasan`
--
ALTER TABLE `atasan`
ADD PRIMARY KEY (`id_atasan`);

--
-- Indexes for table `bagian`
--
ALTER TABLE `bagian`
ADD PRIMARY KEY (`id_bagian`);

--
-- Indexes for table `skpd`
--
ALTER TABLE `skpd`
ADD PRIMARY KEY (`id_skpd`);

--
-- AUTO_INCREMENT for dumped tables
--

--
-- AUTO_INCREMENT for table `bagian`
--
ALTER TABLE `bagian`
MODIFY `id_bagian` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=3;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

Tambahkan code ini di file SiteController.php di folder Controllers

public function actionSignup()
{
$model = new SignupForm();
if ($model->load(Yii::$app->request->post())) {
if ($user = $model->signup()) {
return $this->redirect('index.php?r=site%2Fsignup');
}
}

return $this->render('signup', [
'model' => $model,
]);
}

Jangan lupa tambahkan namespace-nya

use app\models\SignupForm;

di folder models, buat satu file bernama SignupForm.php yang isinya ini :

<?php
namespace app\models;

use app\models\User;
use yii\base\Model;
use Yii;

/**
* Signup form
*/
class SignupForm extends Model
{
public $id;
public $first_name;
public $last_name;
public $id_skpd;
public $id_atasan;
public $id_bagian;
public $username;
public $email;
public $password;

public function getNamaTahun()
{
return $this->hasOne(Tahun::className(), ['id_tahun' => 'id_tahun']);
}

public function getNamaBagian()
{
return $this->hasOne(Bagian::className(), ['id_bagian' => 'id_bagian']);
}

public function getNamaAtasan()
{
return $this->hasOne(Atasan::className(), ['id_atasan' => 'id_atasan']);
}
/**
* @inheritdoc
*/
public function rules()
{
return [
['username', 'filter', 'filter' => 'trim'],
['id', 'required'],
['username', 'required'],
['first_name', 'required'],
['last_name', 'required'],
['id_skpd', 'required'],
['id_bagian', 'required'],
['id_atasan', 'required'],
['username', 'unique', 'targetClass' => '\app\models\User', 'message' => 'This username has already been taken.'],
['username', 'string', 'min' => 2, 'max' => 255],

['email', 'filter', 'filter' => 'trim'],
['email', 'required'],
['email', 'email'],
['email', 'unique', 'targetClass' => '\app\models\User', 'message' => 'This email address has already been taken.'],

['password', 'required'],
['password', 'string', 'min' => 6],
];
}

/**
* Signs user up.
*
* @return User|null the saved model or null if saving fails
*/
public function signup()
{
if ($this->validate()) {
$user = new User();
$user->id = $this->id;
$user->first_name = $this->first_name;
$user->last_name = $this->last_name;
$user->id_skpd = $this->id_skpd;
$user->id_atasan = $this->id_atasan;
$user->id_bagian = $this->id_bagian;
$user->username = $this->username;
$user->email = $this->email;
$user->setPassword($this->password);
$user->generateAuthKey();
if ($user->save()) {
return $user;
}
}

return null;
}
}

kemudian di folder view kita buat file signup.php yang isinya seperti ini :

<?php
use yii\helpers\Html;
use yii\helpers\ArrayHelper;
use yii\bootstrap\ActiveForm;

/* @var $this yii\web\View */
/* @var $form yii\bootstrap\ActiveForm */
/* @var $model \frontend\models\SignupForm */

$this->title = 'Pendaftaran Pegawai';
$this->params['breadcrumbs'][] = $this->title;
?>
<div class="site-signup">
<h1><?= Html::encode($this->title) ?></h1>

<p>Silahkan melakukan isian pendaftaran Pegawai :</p>

<div class="row">
<div class="col-lg-4">
<?php $form = ActiveForm::begin(['id' => 'form-signup']); ?>
<?= $form->field($model, 'id')->textInput(array('placeholder' => 'Maksimal 18 digit'))->label('NIP') ?>
<?= $form->field($model, 'username') ?>
<?= $form->field($model, 'first_name')->label('Nama Depan') ?>
<?= $form->field($model, 'last_name')->label('Nama Belakang') ?>
<?php
$dataSkpd=ArrayHelper::map(\app\models\Skpd::find()->asArray()->all(), 'id_skpd', 'nama_skpd');
echo $form->field($model, 'id_skpd')->label('Nama SKPD')->dropDownList($dataSkpd,
['prompt'=>'Pilih SKPD','style'=>'width:100%;'])
?>
<?php
$dataBagian=ArrayHelper::map(\app\models\Bagian::find()->asArray()->all(), 'id_bagian', 'nama_bagian');
echo $form->field($model, 'id_bagian')->label('Nama Bagian')->dropDownList($dataBagian,
['prompt'=>'Pilih Bagian','style'=>'width:50%;'])
?>
<?php
$dataAtasan=ArrayHelper::map(\app\models\Atasan::find()->asArray()->all(), 'id_atasan', 'nama_atasan');
echo $form->field($model, 'id_atasan')->label('Nama Atasan')->dropDownList($dataAtasan,
['prompt'=>'Pilih Atasan','style'=>'width:50%;'])
?>
<?= $form->field($model, 'email')->textInput(array('placeholder' => 'Contoh : sunarno@gmail.com')) ?>
<?= $form->field($model, 'password')->passwordInput()->textInput(array('placeholder' => 'Password minimal 10 digit')) ?>
<div class="form-group">
<?= Html::submitButton('Daftar', ['class' => 'btn btn-primary', 'name' => 'signup-button']) ?>
</div>
<?php ActiveForm::end(); ?>
</div>
</div>
</div>

Kemudian buat file bernama Skpd.php di folder models yang isinya seperti ini :

<?php

namespace app\models;

use Yii;

/**
* This is the model class for table "skpd".
*
* @property string $id_skpd
* @property string $nama_skpd
* @property string $nama_singkat
*/
class Skpd extends \yii\db\ActiveRecord
{
/**
* @inheritdoc
*/
public static function tableName()
{
return 'skpd';
}

/**
* @inheritdoc
*/
public function rules()
{
return [
[['id_skpd', 'nama_skpd', 'nama_singkat'], 'required'],
[['id_skpd'], 'string', 'max' => 50],
[['nama_skpd'], 'string', 'max' => 1000],
[['nama_singkat'], 'string', 'max' => 100]
];
}

/**
* @inheritdoc
*/
public function attributeLabels()
{
return [
'id_skpd' => 'ID SKPD',
'nama_skpd' => 'Nama Skpd',
'nama_singkat' => 'Nama Singkat',
];
}

}

Kita buat file lagi dengan nama Bagian.php yang isinya seperti ini :

<?php

namespace app\models;

use Yii;

/**
* This is the model class for table "bagian".
*
* @property integer $id_bagian
* @property string $nama_bagian
*/
class Bagian extends \yii\db\ActiveRecord
{
/**
* @inheritdoc
*/
public static function tableName()
{
return 'bagian';
}

/**
* @inheritdoc
*/
public function rules()
{
return [
[['nama_bagian'], 'required'],
[['nama_bagian'], 'string', 'max' => 250]
];
}

/**
* @inheritdoc
*/
public function attributeLabels()
{
return [
'id_bagian' => 'Id Bagian',
'nama_bagian' => 'Nama Bagian',
];
}
}

Kemudian terakhir kita buat file Atasan.php yang isinya seperti ini :

<?php

namespace app\models;

use Yii;

/**
* This is the model class for table "atasan".
*
* @property integer $id_atasan
* @property string $nama_atasan
*/
class Atasan extends \yii\db\ActiveRecord
{
/**
* @inheritdoc
*/
public static function tableName()
{
return 'atasan';
}

/**
* @inheritdoc
*/
public function rules()
{
return [
[['nama_atasan'], 'required'],
[['nama_atasan'], 'string', 'max' => 255]
];
}

/**
* @inheritdoc
*/
public function attributeLabels()
{
return [
'id_atasan' => 'Id Atasan',
'nama_atasan' => 'Nama Atasan',
];
}
}

Kalo sudah semua dilaksanakan, sekarang kita coba akses dibrowser dengan alamat url

http://localhost:8080/basic/web/index.php?r=site%2Fsignup

Sekian, dulu ya … masih semangat…!!!! kalo masih bisa lanjut lagi hahahaha….

Leave a Reply

Your email address will not be published. Required fields are marked *

*