| 
 
 
 今天把以前一个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·只有写成小写才不报错 
                
                
                
        
        
    
  
 
 |