【问题标题】:PHP Laravel 5.3 questionsPHP Laravel 5.3 问题
【发布时间】:2017-06-21 23:21:08
【问题描述】:

我已经搜索了有关我正在尝试解决的两个问题的信息,但我无法清楚地了解如何解决它。特别是,对于 Laravel 5.3,很多东西都发生了变化,并且信息比以前的版本少。

  • 我的第一个问题是:我需要显示不同的视图,具体取决于我使用的是 PC 还是移动设备。我该如何解决?
  • 我的第二个问题是:如何修改 web.php 文件中的路由和重定向?例如:
    • 如果用户是“管理员”,首先我需要能够获取该参数(不知道如何在路由中执行此操作),如果是,则重定向到管理面板视图。在其他情况下,重定向到主视图。
    • 同样,如果非管理员尝试访问管理面板的视图(例如,他知道路径),他应该被重定向到主屏幕。

非常感谢您的帮助。

祝你有美好的一天。

何塞·拉拉。

【问题讨论】:

标签: php laravel authentication permissions routes


【解决方案1】:

要回答您的第一个问题,首先检测设备(您可以使用类似Jenssegers Agent 的东西)并相应地从不同的目录加载刀片视图,您可以通过更改config\view.php 文件来实现此目的

<?php

$agent = new Jenssegers\Agent\Agent(); // Load the provider 
$viewBasePath = realpath(base_path('resources/views')); // Save default path
$viewsPaths = [$viewBasePath];
if ($agent->isMobile()) { // If the device is mobile
    // Load same view by name but from the mobile directory
    array_unshift($viewsPaths, $viewBasePath.'/mobile');
}
return [
    'paths' => $viewsPaths,
    ...............

【讨论】:

    【解决方案2】:

    这是你第二个问题的答案。

    如何将未经授权的人或订阅者重定向到登录或 不受限制的页面,或者我们可以对每个人都可以的页面说 访问。

    AdminController中别忘了使用use Auth;

    public function __construct()
    {
      $this->middleware('admin);
    }
    public function index()
    { 
      return view('adminpanelview');
    }
    
    in **HomeController**
    public function index()
    { 
      return view('homeview');
    }
    **Web.php** route will be like 
    
    Route::get('/Admin',['uses'=>'AdminCotroller@index','as'=>'admin']);
    Route::get('/home',['uses'=>'homeCotroller@index','as'=>'home']);
    
    in **Admin.php** we should put the below code 
    public function handle($request, Closure $next)
    {
      if(!Auth::user()->admin)
      { 
       return redirect()->route('home');
       //return to non
      }
      return $next($request);
    }
     in **Kernel.php** **protected $routeMiddleware** we should register this middleware
    'admin' => \App\Http\Middleware\Admin::class
    

    【讨论】:

      【解决方案3】:

      我猜您的第 1 个问题与刀片模板(视图)有关。如果是正确的,那么刀片模板(视图)与引导集成有关。你在问什么,引导移动视图可以为你处理。 goto [https://www.w3schools.com/bootstrap/tryit.asp?filename=trybs_default&stacked=h][1]你会更好地理解你想要什么。

      【讨论】:

      • Laravel 不需要 Bootstrap,您可以使用 Bootstrap 以外的其他方式进行响应式设计。
      • 但是,在您的刀片上,您可以使用 assets('') 加载引导文件
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-04-28
      • 2017-04-17
      • 2017-05-25
      • 2017-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多