Laravel 5.5上级目录跳转及Auth子目录视图路由问题求助
解决Laravel 5.5路由不生效及返回上级目录的问题
首先得说,你遇到的路由不生效问题,核心原因是视图文件放错位置了!Laravel的.blade.php视图文件默认应该放在resources/views目录下,而不是app/Http/Controllers/Auth/myfolder——这个目录是用来放控制器类文件的,框架根本不会在这里找视图,所以不管你路由怎么配,都找不到对应的视图内容,自然看起来“不生效”。
一、修复路由不生效的步骤
1. 移动视图文件到正确位置
把myfile.blade.php从app/Http/Controllers/Auth/myfolder移到resources/views/auth/myfolder目录下(如果auth/myfolder不存在,手动创建这两级子目录就行)。
2. 配置正确的路由
根据你的需求,有两种常用的路由配置方式:
方式1:直接返回视图(无需控制器)
如果不需要额外业务逻辑,直接在routes/web.php里写:
Route::get('/your-custom-path', function () { // 用点号分隔目录层级,对应resources/views/auth/myfolder/myfile.blade.php return view('auth.myfolder.myfile'); });
方式2:通过控制器返回视图(更规范的做法)
如果需要在返回视图前做一些逻辑处理(比如数据查询、权限验证),先在app/Http/Controllers/Auth下创建一个控制器(比如MyFolderController.php):
<?php namespace App\Http\Controllers\Auth; use App\Http\Controllers\Controller; class MyFolderController extends Controller { public function showMyFile() { // 这里可以加业务逻辑,比如获取用户数据 // $data = User::find(1); // return view('auth.myfolder.myfile', compact('data')); return view('auth.myfolder.myfile'); } }
然后在routes/web.php里配置路由指向这个控制器方法:
Route::get('/your-custom-path', 'Auth\MyFolderController@showMyFile');
配置完成后,访问http://你的域名/your-custom-path就能正常看到视图内容了。
二、Laravel 5.5中返回上级目录的几种场景
1. 视图中引用上级目录的资源/视图
- 引用上级目录的视图:比如在
auth/myfolder/myfile.blade.php里想引用auth目录下的login.blade.php,直接用点号表示层级:@include('auth.login') - 引用public目录里上级目录的静态资源:如果public下有
css根目录,从子目录视图里引用它的CSS文件:
如果是public下的子目录(比如<link rel="stylesheet" href="{{ asset('css/style.css') }}">public/auth/css)想引用根目录的CSS,用../跳转:<link rel="stylesheet" href="{{ asset('../css/style.css') }}">
2. 控制器中跳转上级路由/URL
- 跳转已命名的上级路由:
return redirect()->route('parent-route-name'); - 直接跳转当前URL的上级目录:
// 比如从/abc/def跳到/abc return redirect(url('../'));
3. 文件系统操作中获取上级目录路径
- 获取项目根目录的上级路径:
$parentRootDir = base_path('../'); - 获取storage目录的上级路径:
$parentStorageDir = storage_path('../');
内容的提问来源于stack exchange,提问作者Jeet Patel
相关产品推荐
相关产品推荐

