File Manager Lite
Dir:
/home/u540325668/domains/mccsociety.org/public_html/vendor/facade/ignition/src/Solutions
Upload
[..]
GenerateAppKeySolution.php (1010 B)
Edit
Rename
Del
MakeViewVariableOptionalSolution.php (2.99 KB)
Edit
Rename
Del
MissingPackageSolution.php (1.14 KB)
Edit
Rename
Del
RunMigrationsSolution.php (1.2 KB)
Edit
Rename
Del
SolutionTransformer.php (1.2 KB)
Edit
Rename
Del
SuggestCorrectVariableNameSolution.php (2.97 KB)
Edit
Rename
Del
SuggestImportSolution.php (623 B)
Edit
Rename
Del
SuggestUsingCorrectDbNameSolution.php (766 B)
Edit
Rename
Del
Edit: MakeViewVariableOptionalSolution.php
<?php namespace Facade\Ignition\Solutions; use Illuminate\Support\Facades\Blade; use Facade\IgnitionContracts\RunnableSolution; class MakeViewVariableOptionalSolution implements RunnableSolution { /** @var string */ private $variableName; /** @var string */ private $viewFile; public function __construct($variableName = null, $viewFile = null) { $this->variableName = $variableName; $this->viewFile = $viewFile; } public function getSolutionTitle(): string { return "$$this->variableName is undefined"; } public function getDocumentationLinks(): array { return []; } public function getSolutionActionDescription(): string { $path = str_replace(base_path().'/', '', $this->viewFile); $output = [ 'Make the variable optional in the blade template.', "Replace `{{ $$this->variableName }}` with `{{ $$this->variableName ?? '' }}`", ]; return implode(PHP_EOL, $output); } public function getRunButtonText(): string { return 'Make variable optional'; } public function getSolutionDescription(): string { return ''; } public function getRunParameters(): array { return [ 'variableName' => $this->variableName, 'viewFile' => $this->viewFile, ]; } public function isRunnable(array $parameters = []) { return $this->makeOptional($this->getRunParameters()) !== false; } public function run(array $parameters = []) { $output = $this->makeOptional($parameters); if ($output !== false) { file_put_contents($parameters['viewFile'], $output); } } public function makeOptional(array $parameters = []) { $originalContents = file_get_contents($parameters['viewFile']); $newContents = str_replace('$'.$parameters['variableName'], '$'.$parameters['variableName']." ?? ''", $originalContents); $originalTokens = token_get_all(Blade::compileString($originalContents)); $newTokens = token_get_all(Blade::compileString($newContents)); $expectedTokens = $this->generateExpectedTokens($originalTokens, $parameters['variableName']); if ($expectedTokens !== $newTokens) { return false; } return $newContents; } protected function generateExpectedTokens(array $originalTokens, string $variableName): array { $expectedTokens = []; foreach ($originalTokens as $key => $token) { $expectedTokens[] = $token; if ($token[0] === T_VARIABLE && $token[1] === '$'.$variableName) { $expectedTokens[] = [T_WHITESPACE, ' ', $token[2]]; $expectedTokens[] = [T_COALESCE, '??', $token[2]]; $expectedTokens[] = [T_WHITESPACE, ' ', $token[2]]; $expectedTokens[] = [T_CONSTANT_ENCAPSED_STRING, "''", $token[2]]; } } return $expectedTokens; } }
Simpan