| Version 11 (modified by , 4 years ago) ( diff ) |
|---|
Имплементација
- Организација на контролата врз верзии на изворниот код
За контрола врз верзиите на изворниот код ќе се користи алатката Git.
- Изворен код
- Имплементациски дијаграм
Во овој дел ќе бидат прествени и објаснати одредени функционалности од системот кои се користат нај често во рамки на системот. Ќе започнам со објаснување за начинот на креирање на оддел кој што е предуслов за креирање на фолдер т.е. документ.
Во MVC системот моделот е објект кој се состои од податоци во одредена табела во база. View го претставува интерфејсот преку кој корисникот комуницира со апликацијата. Кога корисникот презема акција, контролорот се справува со акцијата и ги ажурира податоците во база преку моделот доколку е потребно.
Во Laravel, моделот обично е класа со променливи што одговараат на колоните во базата на податоци т.е. променливите кои се дефинирани во Migrations во одредена табела. Контролерите се одговорни за завршување на корисничките дејства и за управување со деловната логика на апликацијата. Рутирањето на ресурсите во Laravel ги доделува „CRUD“ операциите или функциите дефинирани во контролерот со една линија код.
class Department extends Model
{
use HasFactory;
protected $table = "departments";
protected $fillable = ["name", "code", "location", "user_id", "no_of_folders"];
protected $casts = [
'created_at' => 'datetime:d-m-Y',
];
public function folder(){
return $this->hasMany(Folder::class);
}
public function getCreatedByName()
{
return User::where('id', $this->user_id)->pluck('username')->first();
}
}
Department моделот
Во горенаведениот код се запишани променливите кои претходно биле дефнирани во табелата Departments. Исто така во овој дел се дефинираат и релации помеѓу два или повеке модели. Во конкретниот случај е дефинирана релација помеѓу Department и Folder моделот каде што се означува дека еден оддел може да има неколку фолдери. Може да се дефинираат и методи кои влечат одредени податоци од истиот модел како што методот getCreatedByName() кој го наоѓа корисничкото име од User модел-от и истиот може потоа да се прикаже во интерфејс на апликацијата преку класата Department.
public function index()
{
return view("dashboard.departments.index")->with([
"departments" => Department::all(),
]);
}
Метод од контролерот DepartmentsController за приказ на сите оддели запишани во база
Методот index се повикува кога рутата /departments е вчитана со методот GET HTTP. Во овој метод, ние ги преземаме сите достапни податоци во табелата со оддели користејќи го моделот Department и го пренесуваме во интерфејсот вкако променлива. Ова значи дека во интерфејсот, променливата $departments ќе може да се користи за да се прикажат податоци од колекцијата која ги состои сите оддели.
// Departments view
Route::group(['middleware' => 'permission:view_all_departments'], function () {
Route::get("/departments", "Dashboard\DepartmentsController@index")->name("dashboard.departments.index");
});
// Departments manage
Route::group(['middleware' => 'permission:manage_all_departments'], function () {
Route::post("/departments/store", "Dashboard\DepartmentsController@store")->name("dashboard.departments.store");
Route::get("/departments/{id}/edit", "Dashboard\DepartmentsController@editShow")->name("dashboard.departments.editShow");
Route::patch("/departments/{id}/edit", "Dashboard\DepartmentsController@edit")->name("dashboard.departments.edit");
});
Листа на рути за оддели
Секој повик во Laravel потребно е да има посебна рута. Рутата со име index ја дефинирав посебно за да се ограничи пристапот за корисници кои имаат ролја во која не е дозволено да управуваат со оддели. Рутата store служи за креирање на нов оддел. Методот во оваа рута е post затоа што треба да се запишуваат нови податоци т.е. да се креира нов оддел. Кога се работи за приказ на податоци се користи методот get како што е рутата editShow која служи за приказ на еден оддел. Методот patch се повикува кога се прави ажурирање на податоците во база што во овој случај е рутата со име edit. На двете рути за да прикажат и ажурираат оддел потребно им е да се додели вредност id која означува id на одделот во табела.
public function store(NewDepartmentRequest $request)
{
$department = new Department();
$department->name = $request->name;
$department->code = $request->code;
$location = 'Departments' . DIRECTORY_SEPARATOR . $request->code;
if(!Storage::disk('local')->has($location)){
Storage::disk('local')->makeDirectory($location);
}
$department->location = $location;
$department->user_id = auth()->id();
$users = User::all();
$department->save();
Alert::flash("New Department added successfully");
return redirect()->route("dashboard.departments.index");
}
Метод од контролерот DepartmentsController за креирање на нов оддел
Како што може да се види и во кодот методот како влезен параметар има објект од класата NewDepartmentRequest каде што се прави валидацијата на променливите од моделот Department.
Attachments (1)
- project_structure.png (61.6 KB ) - added by 4 years ago.
Download all attachments as: .zip
