Поэтому, когда я изначально положил руки на Laravel, я перешел с Yii1. В Yii мы использовали бы простые шаблоны PHP; которые я не возражаю, так как я на самом деле люблю их таким образом.
Однако, когда я узнал о Blade и как Laravel задокументировал Blade взад и вперед, и едва даже упомянул об использовании простых шаблонов PHP, я был... раздражен.
Я объединил проект, который предоставил бы мне только механизм просмотра PHP. Но всего несколько минут назад я действительно видел это: PhpEngine.php
. Диггин глубже, я встретился лицом к лицу; Я не могу просто пойти и осудить свой проект, но я также могу пойти и копать глубже.
Это путано, так что я смотрю на маленький крошечный ответ:
View::addNamespace()
, я могу просто view("foo::my.template")
тоже, правильно?@extend
или что-то в этом роде, но я не могу найти это для сырых шаблонов PHP.Когда я использую
view::addNamespace()
, я могу простоview("foo::my.template")
тоже, правильно?
Да. Оно делает. Обычно этот формат применяется сторонними пакетами. Например, если вы имеете в виду использование пакета, вы вызываете пространство имен вида как:
$this->loadViewsFrom(__DIR__.'/path/to/views', 'foo');
Теперь вы можете вызвать view как view('foo::whatever')
Как я могу использовать макет/шаблон? Как и в, у меня есть документ, в котором я хочу просмотреть rmy-представления. Как мне это сделать с голыми представлениями PHP? IN, мы получаем @extend или что-то в этом роде, но я не могу найти это для сырых шаблонов PHP.
Я не понимаю, что I can not seem to find that for raw PHP templates
. Но позвольте мне показать вам пример использования blade-системы:
Создайте файл макета:
// master.blade.php
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta charset="utf-8">
<title>@yield('title')</title>
<head>
<body>
@yield('body')
</body>
</html>
Как вы можете заметить выше, есть два раздела, в которых их содержимое может быть изменено в соответствии с каждым представлением, которое расширяет этот макет: название и тело.
Расширение макета для каждого вида
//contact.blade.php
@extends('master')
@section('title')
Contact us
@stop
@section('body')
<h1>Thank you for contact us</h1>
@stop
Обратите внимание, что title
и body
заданы с помощью тега @section. Внутри каждого из них вы определяете отображаемый контент. Наконец, в вашем контроллере просто вызовите view('foo::contact')
или view('contact')
соответствии с вашими потребностями.
Где я могу увидеть некоторые надлежащие документы и примеры для просмотра вместо laravel.com, которые сильно заставляют Blade?
Ну, система лезвий не слишком глубока. Я считаю, что laravel docs достаточно дополняет ваши знания с этой стороны.
$this->render("myview");
, представление будет визуализировано, а затем будет загружен макет, и представление будет помещено туда как<?=$content?>
. Это возможно с Laravel, вообще?.blade.php
. В@yield('body')
примере@yield('body')
- это то же самое, что и<?=$content?>
.