今天把以前一个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/index
和 views/Web/Public/index
,在boot方法中,经过测试,写成View::composer(['Web.Public.main','web.Index.index'],function($view){
明明在同一个目录下,有个·web·只有写成小写才不报错
分页样式错乱
解决方法:文档 分页里面提到了,laravel8以后分页默认用的 tailwindcss
的样式,如果要使用bootstrap
需要在 App\Providers\AppServiceProvider
中指定
use Illuminate\Pagination\Paginator;
/**
* 引导任意应用服务
*
* @return void
*/
public function boot()
{
Paginator::useBootstrap();
}