PHP artisan view:clear 命令清除应用程序中的整个编译视图。如何清除特定视图的编译输出。
问问题
1669 次
1 回答
2
简单的答案:编写您自己的命令。
我该如何开始? 首先,您必须知道编译视图与原始刀片视图具有不同的名称。
他们有什么名字? Laravel在完整文件路径中调用sha1() 。举个例子。layouts/app.blade.php 编译后的文件名(默认安装自带)。
在小于 5.2 的版本中,使用 md5() 代替 sha1(),
5.2, 5.3 => sha1()
5.1, 5.0, 4.2, 4.1, 4.0 => md5()
假设您的版本 >= 5.2
sha1('C:\xampp\htdocs\myapp\resources\views/layouts/app.blade.php');
所以文件名将是9407584f16494299da8c41f4ed65dcb99af82ae2.php
那我该怎么做?
- 创建以文件名作为参数的新命令。
- 在 fire() 函数中添加文件名的视图路径。正如我之前向您展示的那样
C:\xampp\htdocs\myapp\resources\views
(查看完整路径)+/layouts/app.blade.php
(文件名)
$path = 'C:\xampp\htdocs\myapp\resources\views' . '/layouts/app.blade.php';
$path = sha1($path) . '.php';
获取编译后的文件名。- 检查编译视图目录中是否存在文件名
- 如果存在则删除文件
你会有类似的命令,
注意:如果您有不同的视图路径(更改默认值),您必须在下面对我的代码进行更改。
<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
use RuntimeException;
class RemoveCompiled extends Command
{
protected $signature = 'view:clearOne {file}';
protected $description = 'Remove one compiled view!';
public function handle()
{
$path = sha1($this->laravel['config']['view.paths'][0] . '/' . $this->argument('file'));
$f = $this->laravel['config']['view.compiled'] . '\\'. $path . '.php';
if(!file_exists($f))
return; //do whatever you want
if(unlink($f))
echo "File deleted!";
}
}
调用:php artisan view:clearOne layouts/app.blade.php
于 2016-10-23T16:42:54.007 回答