0

PHP artisan view:clear コマンドは、アプリケーション内のコンパイル済みビュー全体をクリアします。特定のビューのコンパイル済み出力をクリアする方法。

4

1 に答える 1

2

簡単な答え:独自のコマンドを作成します。

どうすれば始められますか? まず、コンパイルされたビューは元のブレード ビューとは異なる名前を持っていることを知っておく必要があります。

彼らはどんな名前を持っていますか? Laravel はフル ファイル パスでsha1()を呼び出します。たとえば。layouts/app.blade.php のコンパイル済みファイル名 (デフォルトのインストールに付属)。

5.2 未満のバージョンでは、sha1() の代わりに md5() が使用されます。

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 職人 view:clearOne layouts/app.blade.php

于 2016-10-23T16:42:54.007 に答える