解决配置文件中有回调函数,从而导致 PHP artisan config:cache 出错的解决办法
这个问题都已经出现了3次,还没人分享出解决方案,但我在这里找到了办法: 也就是将回调函数写为helper中的函数或者类中的方法就可以了。
- 修改
config/administrator.php,将下面代码:'permission' => function () { // 只要是能管理内容的用户,就允许访问后台 return Auth::check() && Auth::user()->can('manage_contents'); },换为:'permission' => 'manage_contents', 然后在
bootstrap/helpers.php中 新增如下代码:if (!function_exists('manage_contents')) { function manage_contents() { return Auth::check() && Auth::user()->can('manage_contents'); } } - 接下来测试
php artisan config:cache,没想到还是失败!好沮丧!睡觉。 -
第二天早上起来,突然想到这条命令是对所有缓存文件进行操作,于是检查了一下其他文件,发现了在
config/administrator/users.php中还隐藏了3个回调函数,于是如法炮制,将他们全部改为 helper中的函数,如下:if (!function_exists('manage_users')) { function manage_users() { return Auth::check() && Auth::user()->can('manage_users'); } } if (!function_exists('administrator_users_avatar')) { function administrator_users_avatar($avatar, $model) { return empty($avatar) ? 'N/A' : '<img src="'.$avatar.'" width="40">'; } } if (!function_exists('administrator_users_name')) { function administrator_users_name($name, $model) { return '<a href="/users/'.$model->id.'" target=_blank>'.$name.'</a>'; } } - 再修改
config/administrator/users.php调用的方式:. . . 'permission' => 'manage_users', . . . 'output' => 'administrator_users_avatar', . . . 'output' => 'administrator_users_name', . . . - php artisan config:cache
Configuration cache cleared! Configuration cached successfully! - 在进入后台测试,没问题,Done!
关于 LearnKu
之前也尝试将配置函数写入 helper 或者写成类里静态方法 ,只修改了第一处,最终还是失败,一直被这个问题困扰,非常感谢 @hustnzj 的分享
非常有用,很感谢
求解。。所以
permissions:manage_users就能调用到helpers.php里面的manage_users()函数是么?从而实现该功能? 为什么呐??后面一路报错Call to undefined method Closure::__set_state()头大。。。或者还有别的解决办法么,后面一大堆函数要往helpers.php里面塞,
非常有用,谢谢,标记一下