Я пишу простую пользовательскую директиву в Laravel. Всякий раз, когда я делаю некоторые изменения в коде пользовательской директивы, он не отражается в представлении, пока я
Пользовательский код директивы в global.php
Blade::extend(function($value, $compiler)
{
$pattern = $compiler->createMatcher('molvi');
return preg_replace($pattern, '$1<?php echo ucwords($2); ?>', $value);
});
Директивный вызов в поле зрения
@molvi('haji') //this will output 'Haji' due to ucwords($2)
//the ucwords() is replaced with strtolower()
@molvi('haji') //this will still output 'Haji'
Я преобразовываю слова в верхний регистр. Когда, скажем, я хочу использовать strtolower()
вместо ucwords()
Я должен повторить вышеупомянутые шаги, чтобы отразить изменения.
ОБНОВИТЬ
Я пытался очистить кэш различными способами, как описано в эта тема но все равно безуспешно.
ОБНОВИТЬ
Поскольку никто не отвечает на этот вопрос в StackOverFlow, я разместил его на Laravel Github.
Замечания: Я просто вставляю ответ, данный @lukasgeiter на Github Thread.
Проблема в том, что скомпилированные представления кэшируются, и вы не можете
отключи это. Однако вы можете очистить файлы. Либо вручную
удаление всего в хранилище / фреймворке / представлениях или запуском
командаphp artisan view:clear
Не поддерживается в Laravel 4 или 5.0
Эта команда не найдена в Laravel 4 или 5.0. Это новая команда, введенная в Larvel 5.1. Здесь ViewClearCommand код из 5.1.
Вручную добавьте поддержку в Laravel 4 или 5.0
Вы можете вручную добавить поддержку в Laravel 4 или 5.0.
Зарегистрировать новую команду
Способ добиться этого в предыдущих версиях — зарегистрировать новую команду. Аритсан Девелопмент раздел полезен в этом отношении.
Окончательный рабочий код для 4.2.1
Я проверил следующий код на 4.2.1.
Добавить новый командный файл
приложение / команды / ClearViewCommmand.php
<?php
use Illuminate\Console\Command;
use Illuminate\Filesystem\Filesystem;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Input\InputArgument;
class ClearViewCommand extends Command {
/**
* The console command name.
*
* @var string
*/
protected $name = 'view:clear';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Clear all compiled view files';
protected $files;
/**
* Create a new command instance.
*
* @return void
*/
public function __construct(Filesystem $files)
{
parent::__construct();
$this->files = $files;
}
/**
* Execute the console command.
*
* @return mixed
*/
public function fire()
{
//this path may be different for 5.0
$views = $this->files->glob(storage_path().'/views/*');
foreach ($views as $view) {
$this->files->delete($view);
}
$this->info('Compiled views cleared!');
}
}
Зарегистрировать новую команду
Добавьте следующую строку в app / start / artisan.php
Artisan::resolve('ClearViewCommand');
CLI
Теперь, наконец, вы можете запустить команду. После каждого обновления кода в пользовательской директиве вы можете запустить эту команду, чтобы получить немедленные изменения в представлениях.
php artisan view:clear
Других решений пока нет …