0
点赞
收藏
分享

微信扫一扫

2021-09-06-laravel5.6升级8.6

雅典娜的棒槌 2022-02-19 阅读 111
laravelphp

laravel项目升级

今天把以前一个laravel5.6的项目升级到laravelv8.6.11

拷贝

app/Http Controllers  # 控制器
app/Http Requests  # 自定义,表单规则
app/Model
app/Traits
  
public/   #里面的资源文件
resources/views   #视图文件

routes/    # 路由文件
 
.env  # 里面数据库部分

config目录如果没有更改过,就保持默认,统一修改.env文件就行

以前有的包被内置了

有个叫TrustProxies的包,在不知道啥时候被内置到laravel里面了

Middleware/TrustProxies.php里面的引用变成

use Illuminate\Http\Middleware\TrustProxies as Middleware;

视图里面的方法被替代了

比如 str_limit() 被 Str::limit()替换了

默认的命名空间被注释了

提示错误,找不到目标控制器

Container\BindingResolutionException Target class [xxxxxxxController] does not exist.

后来发现 RouteServiceProvider 默认的命名空间是被注释的状态

// protected $namespace = 'App\\Http\\Controllers';

一、路由分组中Router::namespace()->group(...)

二、路由分组中Router::group(['namespace'=>xxxxx],....)

向多个视图分享数据,分享的数据无法找到

源项目需要在多个视图中分享的数据,在查看 Providers/AppServiceProvider.php文件的boot()方法

一、写法有变化,以前是view()->composer(....),现在是Illuminate\Support\Facades\View::composer(...)

二、我的视图文件的路径 views/Web/Index/indexviews/Web/Public/index,在boot方法中,经过测试,写成View::composer(['Web.Public.main','web.Index.index'],function($view){ 明明在同一个目录下,有个·web·只有写成小写才不报错

举报

相关推荐

0 条评论