wiki:Имплементација

Version 11 (modified by 151545, 3 years ago) ( diff )

Имплементација

- Организација на контролата врз верзии на изворниот код

За контрола врз верзиите на изворниот код ќе се користи алатката Git.

- Изворен код

Извор - SaveSpace

- Имплементациски дијаграм

Во овој дел ќе бидат прествени и објаснати одредени функционалности од системот кои се користат нај често во рамки на системот. Ќе започнам со објаснување за начинот на креирање на оддел кој што е предуслов за креирање на фолдер т.е. документ.
Во 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)

Download all attachments as: .zip

Note: See TracWiki for help on using the wiki.