Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah Templat Blade Boleh Disusun daripada Rentetan dalam Laravel?

Bagaimanakah Templat Blade Boleh Disusun daripada Rentetan dalam Laravel?

Patricia Arquette
Patricia Arquetteasal
2024-10-22 12:03:02124semak imbas

How Can Blade Templates Be Compiled from Strings in Laravel?

Compiling Blade Templates from Strings

In Laravel, a popular web application framework, Blade is the default template engine. Typically, Blade views are stored in view files. However, a question arose regarding the possibility of compiling Blade templates from strings rather than view files.

The provided code demonstrates an attempt to compile a Blade template from a string:

<code class="php">$string = '<h2>{{ $name }}</h2>';
echo Blade::compile($string, array('name' => 'John Doe'));</code>

To extend the functionality of BladeCompiler, a custom BladeCompiler class was created. The new compileWiths() method takes a string and an array of arguments as inputs. It compiles the string, extracts the passed arguments, and evaluates the compiled code within an exception handler.

The updated code below shows the implementation:

<code class="php">namespace Laravel\Enhanced;

use Illuminate\View\Compilers\BladeCompiler as LaravelBladeCompiler;

class BladeCompiler extends LaravelBladeCompiler {

    /**
     * Compile blade template with passing arguments.
     *
     * @param string $value HTML-code including blade
     * @param array $args Array of values used in blade
     * @return string
     */
    public function compileWiths($value, array $args = array())
    {
        $generated = parent::compileString($value);

        ob_start() and extract($args, EXTR_SKIP);

        // We'll include the view contents for parsing within a catcher
        // so we can avoid any WSOD errors. If an exception occurs we
        // will throw it out to the exception handler.
        try
        {
            eval('?&gt;'.$generated);
        }

        // If we caught an exception, we'll silently flush the output
        // buffer so that no partially rendered views get thrown out
        // to the client and confuse the user with junk.
        catch (\Exception $e)
        {
            ob_get_clean(); throw $e;
        }

        $content = ob_get_clean();

        return $content;
    }

}</code>

Atas ialah kandungan terperinci Bagaimanakah Templat Blade Boleh Disusun daripada Rentetan dalam Laravel?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn