v2.5.2
Giriş yap

Php install sayfasi

aykhan
458 defa görüntülendi

Merhaba envanto için bir script hazırlıyorum, satışta olan scriptlerde scripti ilk kurduğumuz zaman ilk olarak intall sayfası açılıyor. Bu sayfadan db user name password host felan ekleniyo ve bu sayedede db kod yazmadan yada kodlara karışmadan kurulmuş oluyo. Bu gibi işlemi laravelde nasıl yapa bilirim? yani env verileri yada diger dosya içlerini dinamik olarak nasıl oluştura biliriz?

h4ckdr0
724 gün önce

Merhaba, Laravel ile bir script oluştururken, kurulum sırasında veritabanı bilgilerini dinamik olarak almak için aşağıdaki adımları takip edebilirsin:

  • İlk olarak, kurulum sayfası oluşturmak için bir sayfa oluşturman gerekir. Bu sayfaya kullanıcılar tarafından girdi olarak istenen veritabanı bilgilerini alacak form elemanları ekleyebilirsin.

  • Formdan girdi olarak alınan veritabanı bilgilerini, kurulum sırasında .env dosyasına yazdırmak için aşağıdaki kod bloğunu kullanabilirsin:

$database_name = request('database_name');
$database_username = request('database_username');
$database_password = request('database_password');
$database_host = request('database_host');

$env_update = file_get_contents(base_path('.env'));

$env_update = str_replace('DB_DATABASE=homestead', 'DB_DATABASE='.$database_name, $env_update);
$env_update = str_replace('DB_USERNAME=homestead', 'DB_USERNAME='.$database_username, $env_update);
$env_update = str_replace('DB_PASSWORD=secret', 'DB_PASSWORD='.$database_password, $env_update);
$env_update = str_replace('DB_HOST=127.0.0.1', 'DB_HOST='.$database_host, $env_update);

$fp = fopen(base_path('.env'), 'w');
fwrite($fp, $env_update);
fclose($fp);

Bu kod bloğu, formdan alınan veritabanı bilgilerini .env dosyasına yazar.

  • Bu işlemleri tamamladıktan sonra, veritabanı bağlantısını kontrol etmek için aşağıdaki kod bloğunu kullanabilirsin:
try {
    DB::connection()->getPdo();
} catch (\Exception $e) {
    die("Veritabanına bağlanılamıyor. Lütfen .env dosyasındaki veritabanı bilgilerini kontrol edin.");
}

Eğer veritabanına bağlanılabiliyorsa, kurulum işlemini tamamlamış olursun. Eğer veritabanına bağlanılamıyorsa, kullanıcıya .env dosyasındaki veritabanı bilgilerini kontrol etmesi gerektiği bilgisini gösterebilirsin.

Ek olarak, kurulum sırasında veritabanı oluşturulmasını istiyorsan, aşağıdaki kod bloğunu kullanabilirsin:

use Illuminate\Support\Facades\Schema;

try {
    Schema::create($database_name, function($newtable)
    {
        $newtable->increments('id');
        $newtable->string('name',255);
        $newtable->timestamps();
    });
} catch (\Exception $e) {
    die("Veritabanı oluşturulamıyor. Lütfen .env dosyasındaki veritabanı bilgilerini kontrol edin.");
}

Bu kod bloğu, veritabanı adını formdan alır ve veritabanı oluşturmayı dener. Eğer veritabanı oluşturulamıyorsa, kullanıcıya .env dosyasındaki veritabanı bilgilerini kontrol etmesi gerektiği bilgisini gösterebilirsin.

Veritabanı oluşturulduktan sonra, ilgili tablo ve sütunları oluşturmak için Schema façadesini kullanabilirsin. Örneğin, aşağıdaki kod bloğu ile bir "users" tablosu oluşturabilirsin:

Schema::create('users', function($table) {
   $table->increments('id');
   $table->string('name');
   $table->string('email')->unique();
   $table->string('password');
   $table->timestamps();
});

Bu repo'yu npx ile kurup inceleyerek projenizi daha da geliştirebilirsiniz (istediğiniz tarzda bir script mevcut): https://github.com/erhanurgun/fork-app-vaahcms

Umarım bu bilgiler yardımcı olmuştur. Eğer daha fazla sorunuz varsa lütfen sormaktan çekinmeyin!