Kendi projelerim için yazdığım sistemin kodlarını vereyim. Bu benim kurulum ve güncelleme işimi görüyor. Eksiği çok ama bu haliyle iş yapıyor.
Controller
<?php
class InstallController extends BaseController {
public function installer()
{
return View::make('installer.installer');
}
public function install()
{
return View::make('installer.install')
->with('message_area', null);
}
public function installProcess()
{
$input = Input::all(); Input::flash();
$rules = array(
'username' => 'required|max:15|min:3|alpha_num',
'password' => 'required|max:15|min:6',
'cpassword' => 'required|max:15|min:6|same:password',
'usermail' => 'required|min:2|max:60|email'
);
$validation = Validator::make($input, $rules);
if($validation->fails())
return View::make('installer.install')
->nest('message_area', 'home.partials.alerts.error', array('message' => $validation->messages()->first()));
// Run the installer
Artisan::call('migrate');
// Run the updater
Artisan::call('migrate', array('--path' => '/app/database/migrations/updates'));
// Seed the data
Artisan::call('db:seed');
// Get our admin account
$user = new User();
$user->username = $input['username'];
$user->password = Hash::make($input['password']);
$user->usermail = $input['usermail'];
$user->authority = 0;
$user->save();
//Create an installed file so we can keep track of it.
File::put(storage_path() . '/installed.txt', 'true');
// All is well
return View::make('installer.install-success');
}
public function update()
{
return View::make('installer.update');
}
public function updateProcess()
{
// Run the updater
Artisan::call('migrate', array('--path' => '/app/database/migrations/updates'));
//Create an installed file so we can keep track of it.
File::put(storage_path() . '/installed.txt', 'true');
// All is well
return View::make('installer.update-success');
}
}
Route
Route::group(array('before' => 'not_installed'), function() {
Route::get('installer', 'InstallController@installer');
Route::get('installer/install', 'InstallController@install');
Route::post('installer/install', 'InstallController@installProcess');
Route::get('installer/update', 'InstallController@update');
Route::post('installer/update', 'InstallController@updateProcess');
});
Route::group(array('before' => 'installed'), function() {
//Sitenizin rotaları
});
Filter
Route::filter('installed', function() {
$is_installed = File::get(storage_path() . '/installed.txt');
if($is_installed !== "true") return Redirect::to('installer');
// App successfully installed.
View::share('settings', Settings::first());
});
Route::filter('not_installed', function() {
$is_installed = File::get(storage_path() . '/installed.txt');
if($is_installed !== "false") return Redirect::to('/');
});
Viewleri kendiniz oluşturursunuz. Bir form oluşturup kullanıcından admin şifresi vb. isteyeceksiniz.
Yamaları app/database/migrations/updates klasörü altına atın.