Laravel8向welcome.blade传递数据时报命名参数后不能用位置参数错误怎么办
报错原因及解决方案
这个错误既不是Laravel 8的特定语法要求导致,也和依赖包缺失无关,是PHP 8.0及以上版本的原生语法规则限制触发的报错。
PHP 8.0引入了命名参数特性,规则要求:调用函数/方法时如果混合使用位置参数(不带参数名,按顺序传参)和命名参数(指定参数名,比如data: $xxx),所有位置参数必须放在命名参数之前。只要出现了一个命名参数,后续的所有参数都必须使用命名参数传递,不能再混用位置参数,否则就会抛出你遇到的这个报错。
你大概率是在调用view()方法传递数据时写了类似如下的错误代码:
// 错误示例:命名参数之后出现位置参数 return view('welcome', user: $user, $otherData);
修复方案
有两种常用的修复方式:
- 统一用位置参数传递视图数据(推荐,符合Laravel常规写法):
// 直接传数组 return view('welcome', ['user' => $user, 'other' => $otherData]); // 变量名和数组键名一致时可以用compact快速打包 return view('welcome', compact('user', 'otherData'));
- 若要使用命名参数,后续所有参数都指定参数名:
// 仅做语法合规示例,给视图传参数不推荐该写法 return view('welcome', data: ['user' => $user, 'other' => $otherData]);
内容的提问来源于stack exchange,提问作者Sherif Nasser
相关产品推荐
相关产品推荐

