Wer Magento kennt, kennt sicherlich auch die zuschaltbaren Templat-Hints – ein sehr nützliches Tool für Entwickler. Um dieses Tool auch in Laravel umzusetzen braucht es nur eine neue Datei und eine Änderung am AppServiceProvider.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
<?php namespace App\Providers; // these classes are required use App\Helpers\TemplateHints; use Illuminate\View\Compilers\BladeCompiler; // ... more use statements class AppServiceProvider extends ServiceProvider { // function definitions, eg. boot() // ... public function register() { $app = app(); $resolver = $app['view']->getEngineResolver(); $resolver->register('blade', function() use ($app) { $compiler = new BladeCompiler($app['files'], config('view.compiled')); // instead of Illuminate\View\Engines\CompilerEngine, we return our own compiler engine return new TemplateHints($compiler, $app['files']); }); } // more function definitions // ... } |
Die eigene Compiler Engine erweitert dann lediglich die Laravel-interne CompilerEngine und ergänzt die kompilierten Dateien mit der Pfadangabe. Dieses erfolgt nur bei Übergabe eines URL-Parameters showTemplateHints=1 so dass die Funktion darüber steuerbar ist.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
<?php namespace App\Helpers; use Illuminate\View\Engines\CompilerEngine; class TemplateHints extends CompilerEngine { public function get($path, array $data = array()) { $results = parent::get($path, $data); if (request('showTemplateHints') == '1') { // cut base path to laravel installation to prevent too long paths $relative_path = str_replace(base_path(), "", $path); // the path wrapper $prepend = '<div style="position:relative; border:1px dotted red; margin:6px 2px; padding:18px 2px 2px 2px; zoom:1;">'; $prepen .= '<span style="position: absolute; left: 0px; top: 0px; padding: 2px 5px; background: red; color: white; font: 11px Arial; z-index: 9998; text-align: left !important;" onmouseover="this.style.zIndex=\'9999\'" onmouseout="this.style.zIndex=\'9998\'" title="' . $relative_path . '">' . $relative_path . '</span>'; $append = '</div>'; $results = $prepend . $results . $append; } return $results; } } |