如何清除特定刀片模板的编译视图

时间:2016-10-23 15:54:10

标签: laravel-5 laravel-views

PHP artisan view:clear命令清除应用程序中的整个编译视图。 如何清除特定视图的编译输出。

1 个答案:

答案 0 :(得分: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()函数中添加filename的视图路径。正如我在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';获取已编译的文件名。
  • 检查编译视图中是否存在文件名dir
  • 删除文件(如果存在)

你将拥有类似的命令,

  

注意:如果您有不同的视图路径(更改默认值),则必须   对我的代码进行更改。

<?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工匠视图:clearOne layouts / app.blade.php