【问题标题】:Same views in different profiles Laravel不同配置文件中的相同视图 Laravel
【发布时间】:2020-07-16 10:45:55
【问题描述】:

我是 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');
});

这是我的观点折叠:

这是我的 Controller 文件夹:

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

<?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 的新手。

【问题讨论】:

  • 能否请您编辑以共享来自您的控制器之一的代码?

标签: php laravel authentication middleware laravel-6


【解决方案1】:

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

之前

return view('mphysicist.dashboard');

之后

return view('dashboard');

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

【讨论】:

  • 谢谢。它适用于视图,但问题是它仍在使用位于 MPhysicist/DashboardController.php 文件夹中的 DashboardController,并且由于未引用变量而出现错误。有什么方法可以使用位于 Admin/DashboardController.php 中的 DashboardController?我认为我必须更改路由文件 web.php 中的某些内容,但我不知道。
  • 啊,是的,我希望你只有一个共同的观点。如果您需要通用控制器,请更改路由组上的 namespace 选项
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-19
  • 2018-01-09
相关资源
最近更新 更多