Cara Edit File .env Laravel 7 dengan Brotzka/laravel-dotenv-editor

.env atau dotenv adalah sebuah file konfigurasi secara umum yang mengatur aplikasi agar bisa berjalan dengan baik di dalam suatu sistem. Pada Laravel, file ini berada di folder root yang secara otomatis dibuat saat kita membuat aplikasi melalui composer atau laravel installer. Jika anda mendapatkan laravel dengan cara mengunduh atau clone anda tidak akan mendapatkan file .env, jadi anda harus menyalin dari file .env.example untuk membuat file .env dan menggenerate application key dengan menggunakan perintah:

php artisan key:generate

Untuk mengkonfigurasi seperti database, nama aplikasi, url aplikasi, mengatur konfigurasi email, dan lain-lain, atau menambahkan konfigurasi baru untuk package laravel anda, anda harus melakukannya secara manual, yaitu menambahkannya dan mengeditnya langsung dari file .env ini. Artinya kita harus membuka file manager, setiap kali kita ingin mengubah konfigurasinya. Hal ini mudah jika kita melakukannya di local komputer, lalu bagaimana saat aplikasi tersebut sudah dihosting? Akan merepotkan bukan bagi user yang tidak paham? Hal ini biasanya dilakukan oleh user lain yang punya akses ke CPanel. Untuk itu kita perlu cara untuk bisa mengedit file .env dari dashboard atau dari dalam aplikasi itu sendiri.

Bila anda melakukan edit file .env di local computer dan menjalankan php artisan serve, anda mungkin perlu menjalankan ulang php artisan serve agar konfigurasi yang telah anda ubah di file .env tersebut bisa dterapkan.

Brotzka/laravel-dotenv-editor


Adalah package yang kita butuhkan untuk mengedit file .env di Laravel. Fitur package ini cukup lengkap karena bisa menambahkan, mengubah, membackup, dan mengupload file .env. Sayangnya, sepertinya package ini belum diupdate lagi, untuk mengakomodasi pengguna bootstrap 4 dan vue.js 2, sehingga akan terjadi kendala bagi pengguna bila anda menjalankannya, misalnya di AdminLTE 3 di mana tampilannya akan berantakan dan ada fungsi yang tidak berjalan. Akan tetapi anda masih bisa menggunakannya dengan sedikit modifikasi pada scriptnya.

Instalasi

Bila anda tertarik menggunakan package ini, anda bisa menginstalnya dengan composer:

composer require brotzka/laravel-dotenv-editor

Setelah selesai, jalankan perintah berikut untuk mempublish file config ke dalam folder config:

php artisan vendor:publish --provider="Brotzka\DotenvEditor\DotenvEditorServiceProvider"

Atau jika anda ingin menginstal dengan menambahkan baris pada composer.json, tambahkan: "brotzka/laravel-dotenv-editor": "2.*"

"require": {
    //other packages
    "brotzka/laravel-dotenv-editor": "2.*"
}

Lalu jalankan composer update.

Kemudian mempublishnya dengan perintah berikut:

php artisan vendor:publish --provider="Brotzka\DotenvEditor\DotenvEditorServiceProvider" --force

Hasilnya adalah file konfigurasi config/dotenveditor.php dan view blade dotenv-editor di dalam folder resources/views/vendor sehingga anda tidak perlu lagi membuat tampilan view.

Edit config

Buka config/dotenveditor.php, lihat pada baris:

'middleware' => ['web', 'admin'],

Jika anda tidak memiliki middleware dengan nama admin, hapus saja sehingga yang tersisa adalah web, atau menambahkan middleware auth.

'middleware' => ['web','auth'],

Untuk melihat hasilnya jalankan di browser dengan url:

localhost:8000/admin/env

Jika anda ingin mengubah urlnya bisa anda lakukan dengan mengubah:

'prefix' => 'admin/manage/env',
'as'     => 'admin.env.',

Memperbaiki Tampilan View dotenv-editor (Khusus Bootstrap 4 dan Vue Js 2)

Karena mengunakan bootstrap 3 maka anda yang menggunakan bootstrap 4 pasti akan melihat tampilannya berantakan atau tidak sesuai. Anda perlu mengubahnya dengan menyesuaikannya dengan bootstrap 4. Jika anda menggunakan Laravel-AdminLTE gunakan fileoverview-adminlte.blade.php.

Layouts

Ganti @push('js') dengan @section('js') atau jika anda menggunakan laravel-mixer gunakan @section('load_js'). Tututp dengan @endsection.

Vue Js

Tambahkan Vue Js 2 sebelum <script>

<script src="https://cdn.jsdelivr.net/npm/vue"></script>

Script method deleteEntry

Ganti script berikut:

this.entries.$remove(entry);

Ubah menjadi:

let index = this.entries.indexOf(entry);
this.entries.splice(index, 1);

Menu Tab

<li v-for="view in views" role="presentation" class="@{{ view.active ? 'active' : '' }}">
<a href="javascript:;" @click="setActiveView(view.name)">@{{ view.name }}</a>
</li>

Ubah menjadi :

<li v-for="view in views" role="presentation" class="nav-item">
<a class="nav-link" v-bind:class="[view.active ? 'active' : '']" href="javascript:;" @click="setActiveView(view.name)" data-toggle="pill" role="tab">@{{ view.name }}</a>
</li>

Nama Class

Ubah nama class berikut:

  • panel menjadi card
  • panel-default menjadi card-default
  • panel-heading menjadi card-header
  • panel-title menjadi card-title
  • panel-body menjadi card-body
  • glyphicon glyphicon-edit menjadi fas fa-edit
  • glyphicon glyphicon-trash menjadi far fa-trash-alt atau fa fa-trash
  • fa fa-refresh menjadi fas fa-sync-alt

Modal

Pada bagian header modal anda perlu memindahkan letak kode:

<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>

Setelah tag <h4>, contoh:

<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title">@{{ deleteModal.title }}</h4>

Ubah Menjadi:

<h4 class="modal-title">@{{ deleteModal.title }}</h4>
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>

Upload

Tambahkan code @csrf pada form upload seperti yang diperlihatkan di bawah ini:

<form method="post" action="{{ url(config('dotenveditor.route.prefix') . "/upload") }}" enctype="multipart/form-data">
@csrf
<div class="form-group">
  <label for="backup">{!! __('dotenv-editor::views.upload_label') !!}</label>
    <input type="file" name="backup">
</div>
<button type="submit" class="btn btn-primary" title="Ein Backup von deinem Computer hochladen">
{!! __('dotenv-editor::views.upload_button') !!}
</button>
</form>

Tambahan

Jika muncul error: "Call to undefined function Brotzka\DotenvEditor\str_finish()" karena Laravel kini menggunakan method Str::finish menggantikanstr_finish() sehingga anda harus menggantinya secara manual atau anda instal saja package laravel/helpers agar method tersebut tetap bisa berfungsi.

composer require laravel/helpers

Semogo bermanfaat.

Jika masih ada yang kurang akan kami perbaharui kembali.