首页 > 解决方案 > 不同配置文件中的相同视图 Laravel

问题描述

我是 laravel 的新手。我正在使用 laravel 6 开发医疗应用程序。我使用 laravel auth 和中间件来控制用户和配置文件。我有 4 个个人资料(管理员、物理医生、医生和护士)。我需要管理员和物理医生具有相同的仪表板(主屏幕)。有谁知道这是怎么做到的吗?

This is my routes file web.php:

Route::get('/', function () {
    return view('auth.login');
});

Auth::routes();

Route::group(['as'=>'admin.','prefix'=>'admin','namespace'=>'admin', 'middleware'=>['auth','admin']], function ()
{
    Route::get('dashboard', 'DashboardController@index')->name('dashboard');
    Route::resource('user', 'UserController');
    Route::resource('dosimeter', 'DosimeterController');
    Route::resource('dosimeterref', 'DosimeterRefController');
    Route::resource('room', 'RoomController');
});

Route::group(['as'=>'mphysicist.','prefix'=>'mphysicist','namespace'=>'mphysicist', 'middleware'=>['auth','mphysicist']], function ()
{
    Route::get('dashboard', 'DashboardController@index')->name('dashboard');
});

Route::group(['as'=>'doctor.','prefix'=>'doctor','namespace'=>'doctor', 'middleware'=>['auth','doctor']], function ()
{
    Route::get('dashboard', 'DashboardController@index')->name('dashboard');
});

Route::group(['as'=>'nurse.','prefix'=>'nurse','namespace'=>'nurse', 'middleware'=>['auth','nurse']], function ()
{
    Route::get('dashboard', 'DashboardController@index')->name('dashboard');
});

这是我的意见折叠:

在此处输入图像描述

这是我的控制器文件夹:

在此处输入图像描述

这是我的管理仪表板代码:

<?php
namespace App\Http\Controllers\Admin;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\DosimeterRef;
use App\Room;
use App\DoseRecordReference;
use Illuminate\Support\Facades\DB;

class DashboardController extends Controller
{
    public function index(Request $request)
    {
        $rooms = Room::all();
        $dosiemterrefs = DosimeterRef::all();
        $doseRecordReferences = DoseRecordReference::all();


        $period = $request->get('period_form');

        if(empty($period) || is_null($period) || $period == 0){
          $dosim_info_array = self::getRoomDosimData(1);
        } else {
          $dosim_info_array = self::getRoomDosimData($period);
        }


        return view('admin.dashboard',compact('rooms','dosiemterrefs', 'doseRecordReferences', 'period', 'dosim_info_array'));
    }
//Other functions
}

这是我的物理医生仪表板:

<?php

namespace App\Http\Controllers\MPhysicist;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;

class DashboardController extends Controller
{
    public function index()
    {
        return view('mphysicist.dashboard');
    }
}

我需要两个仪表板相同,以避免重复代码。

非常感谢,如果这个问题太简单了,我很抱歉,我是 laravel 的新手。

标签: phplaravelauthenticationmiddlewarelaravel-6

解决方案


如果你想获得相同的 Blade 视图,你只需从视图名称中删除前缀

return view('mphysicist.dashboard');

return view('dashboard');

您给viewhelper 的值是从您的views文件夹开始的虚线路径。顺便说一句,您应该移动通用 Blade 文件以免被命名空间。


推荐阅读