назначить и отклонить функцию для кнопки и отобразить ее на панели пользователя в Laravel - PullRequest
1 голос
/ 11 марта 2020

Я хочу назначить функции кнопкам одобрения и отклонения, которые находятся на панели администратора, и отобразить результат на панели пользователя.

здесь мое представление администратора

панель управления. php. blade

<div class="card-body">
        <div class="table-responsive">
          <table class="table">
            <thead class=" text-primary">
            <th>ID</th>
            <th>Name</th>
            <th>Leave Type</th>
            <th>Leave Start date</th>
            <th>Leave End date</th>
            <th>Remark</th>
            <th>Approve</th>
            <th>Decline</th>  
            </thead>
            <tbody> 
              @foreach ($leaves as $leave)          
              <tr>
                <td>{{$leave->id}}</td>
                <td>{{$leave->applied_by->name}}</td>
                <td>{{$leave->type->type}}</td>
                <td>{{$leave->start}}</td>
                <td>{{$leave->end}}</td>
                <td>{{$leave->remarks}}</td>
                <td>
                    <a href="#" class="btn btn-success">Approve</a>
                </td>
                <td>
                    <a href="#" class="btn btn-danger">Decline</a>

AdminLeaveController. php .. У вас еще нет метода

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\Leave;
use App\Models\LeaveType;
use App\User;

class AdminLeave extends Controller
{
    public function leaveapproval()
    {
        $leaves = Leave::with('type', 'applied_by')->get();
        return view ('admin.dashboard',compact ('leaves'));
    }
}

Ответы [ 2 ]

0 голосов
/ 11 марта 2020

Самый простой способ сделать это - создать два новых маршрута: один для утверждения, а другой для отклонения.

Route::post('/approve/{id}', 'AdminLeaveController@approve')->name('admin.approve')
Route::post('/decline/{id}', 'AdminLeaveController@decline')->name('admin.decline')

Теперь, когда у вас есть эти маршруты, вы можете добавить их к своим кнопкам:

<a href="{{route('admin.approve', $leave->id)}}" class="btn btn-success">Approve</a> //pass the id here
<a href="{{route('admin.decline', $leave->id)}}" class="btn btn-danger">Decline</a> //pass the id here as well

После этого вы можете добавить столбец boolean к вашему leaves table, что-то вроде status, где 0 будет отклонено, а 1 будет утверждено.

Все, что осталось сделать, - это создать два новых метода в вашем AdminLeaveController:

public function approve($id){
   $leave = App\Models\Leave::findOrFail($id);
   $leave->status = 1; //Approved
   $leave->save();
   return redirect()->back(); //Redirect user somewhere
}

public function decline($id){
   $leave = App\Models\Leave::findOrFail($id);
   $leave->status = 0; //Declined
   $leave->save();
   return redirect()->back(); //Redirect user somewhere
}

Примечание: код не проверен, сообщите мне, если у вас есть какие-либо ошибки.

0 голосов
/ 11 марта 2020

Вам просто нужно пройти 0 для «Одобрить» и 1 для «Отклонить». В url тогда вам нужен еще один метод в контроллере, который изменяет состояние столбца, который вы сохранили в базе данных.

Не забудьте поставить токен csrf.

Как я вижу это Это простая вещь, которую вы должны попробовать по своему усмотрению.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...