今天把以前一个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 默认的命名空间是被注释的状态
一、路由分组中Router::namespace()->group(...)
二、路由分组中Router::group(['namespace'=>xxxxx],....)
向多个视图分享数据,分享的数据无法找到
源项目需要在多个视图中分享的数据,在查看 Providers/AppServiceProvider.php文件的boot()方法
一、写法有变化,以前是view()->composer(....) ,现在是Illuminate\Support\Facades\View::composer(...)
二、我的视图文件的路径 views/Web/Index/index 和 views/Web/Public/index ,在boot方法中,经过测试,写成View::composer(['Web.Public.main','web.Index.index'],function($view){ 明明在同一个目录下,有个·web·只有写成小写才不报错
|