Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk menggunakan Blade dengan CakePHP?

Bagaimana untuk menggunakan Blade dengan CakePHP?

WBOY
WBOYasal
2023-06-04 10:01:461502semak imbas

CakePHP ialah rangka kerja PHP MVC yang popular, dan Blade ialah salah satu enjin templat yang sangat popular dalam rangka kerja Laravel. Walaupun CakePHP datang dengan enjin templat yang berkuasa, kadangkala kita mungkin mahu menggunakan enjin templat lain untuk menggantikan enjin lalai.

Dalam artikel ini, saya akan memperkenalkan cara menggunakan enjin templat Blade dalam CakePHP 3, dengan harapan dapat membantu beberapa pembangun yang ingin mencuba Blade.

  1. Pasang Blade

Mula-mula, kita perlu memasang Blade, yang boleh dilakukan melalui Composer. Tambahkan dependensi pada fail composer.json dalam direktori akar projek:

{
    "require": {
        "illuminate/view": "5.8.*"
    }
}

dan kemudian jalankan perintah composer update dalam terminal untuk memasang dependensi.

  1. Mengkonfigurasi CakePHP

Seterusnya, kita perlu mengkonfigurasi CakePHP untuk menggunakan enjin templat Blade. Mula-mula, tambah kod berikut dalam fail config/app.php:

'View' => [
    'className' => 'CakeViewView',
    'viewPath' => APP . 'Template/',
    'layoutPath' => APP . 'Template/Layout/',
    'templatePath' => APP . 'Template/',
    'cachePath' => CACHE . 'views/',
    'helpers' => [
        'Html',
        'Form',
        'Url'
    ],
    'useRenderCache' => false,
    'engine' => [
        'Blade' => [
            'className' => 'CakeBladeBladeEngine',
            'options' => [
                'cache_path' => TMP . 'blade_cache',
                'view_path' => APP . 'Template/',
                'auto_reload' => true
            ]
        ]
    ]
]

Dalam tatasusunan konfigurasi ini, kami menentukan konfigurasi paparan CakePHP dan menambah enjin templat bernama "Blade". Dalam pilihan Blade, kami menentukan laluan cache, laluan lihat dan sama ada untuk memuat semula templat secara automatik.

Seterusnya, kita perlu menambah fail untuk mentakrifkan enjin Blade dalam src/View/BladeEngine.php.

<?php
namespace CakeBlade;

use CakeViewEngineEngine;
use IlluminateViewCompilersBladeCompiler;
use IlluminateViewEnginesCompilerEngine;
use IlluminateViewFactory;
use IlluminateViewFileViewFinder;

class BladeEngine extends Engine
{
    public $Factory;

    public function __construct($view = null, $layout = null)
    {
        parent::__construct($view, $layout);

        $config = CakeCoreConfigure::read('App');
        $viewPath = $config['Template']['templatePath'];
        $cachePath = $config['engine']['Blade']['options']['cache_path'];

        $this->Factory = new Factory(new FileViewFinder([$viewPath]), new CompilerEngine(new BladeCompiler(new Filesystem, $cachePath)));
    }

    public function render($template, $layout = null)
    {
        return $this->Factory->make($template, compact('data'))->render();
    }
}

Dalam kelas ini, kami mentakrifkan kelas BladeEngine, yang mewarisi daripada kelas Enjin dalam CakePHP. Dalam pembina, kita membaca laluan pandangan menggunakan konfigurasi CakePHP dan menyerahkannya kepada pembina Blade supaya Blade boleh mencari fail templat. Selain itu, kami menambah laluan cache untuk meningkatkan prestasi. Dalam fungsi render, kami menggunakan kelas Kilang Blade untuk memaparkan templat.

  1. Buat fail templat

Sekarang kita telah selesai mengkonfigurasi dan mentakrifkan enjin Blade, kita boleh mula menulis fail templat. Dalam CakePHP, kita boleh mencipta fail templat dalam direktori src/Template/.

Sebagai contoh, kita boleh mencipta templat Blade ringkas dalam src/Template/Pages/home.blade.php:

@extends('Layout.default')

@section('content')
<div class="jumbotron">
  <h1>Welcome to CakeBlade</h1>
  <p>CakePHP 3 + Blade Template Engine.</p>
  <p><a class="btn btn-primary btn-lg" href="#" role="button">Learn more</a></p>
</div>
@endsection

Dalam templat ini, kami menggunakan @extends untuk menentukan reka letak. Kandungan antara @section dan @endsection akan dimasukkan ke dalam arahan @yield('content') reka letak.

  1. Templat Rendering

Kini, kita boleh membuat templat dalam pengawal dengan memanggil enjin Blade. Sebagai contoh, tambahkan kod berikut dalam PagesController:

public function home()
{
    $this->getViewBuilder()->setClassName('CakeBlade.Blade');
    $this->set(compact('data'));
    $this->render('home');
}

Sebelum memberikan templat, kita perlu menentukan kelas paparan yang digunakan. Kami kemudian menghantar data ke paparan dan menentukan nama fail templat untuk dimuatkan.

  1. Jalankan ujian

Kini kita boleh melawati halaman dalam penyemak imbas untuk melihat sama ada Blade berfungsi dengan betul. Masukkan nama fail dalam bar alamat, seperti http://localhost/cake_blade/pages/home, dan anda akan melihat templat Blade yang baru anda tulis, yang sama seperti yang kami takrifkan dalam fail templat.

Ringkasan

Dalam artikel ini, kami memperkenalkan cara menggunakan enjin templat Blade dalam CakePHP 3 untuk menggantikan enjin templat lalai. Dengan cara ini, kami boleh membangunkan aplikasi web menggunakan sintaks dan ciri berkuasa yang disediakan oleh Blade. Jika anda sedang mencari enjin templat yang kaya dengan ciri, Blade ialah pilihan yang bagus.

Atas ialah kandungan terperinci Bagaimana untuk menggunakan Blade dengan CakePHP?. 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