From c0baaf86533d4674fd7e589ae218282f2a5ba004 Mon Sep 17 00:00:00 2001 From: Alexandr Chernyaev Date: Sat, 7 Mar 2020 22:51:36 +0300 Subject: [PATCH 1/3] Update layouts.md --- source/ru/docs/layouts.md | 106 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 106 insertions(+) diff --git a/source/ru/docs/layouts.md b/source/ru/docs/layouts.md index 4e8c831e8..c11112075 100644 --- a/source/ru/docs/layouts.md +++ b/source/ru/docs/layouts.md @@ -501,6 +501,112 @@ public function layout(): array Все данные из метода `query` будут переданы в ваш шаблон. +## Blade Components + +Компоненты `Blade` могут быть вызваны в качестве слоя, для этого необходимо создать компонет с помощью `artisan` команды: + +```bash +php artisan make:component Hello --inline +``` + +Для того, чтобы вызвать его в экране необходимо использовать статический метод `Layout::component`: + +```php +use App\View\Components\Hello; +use Orchid\Screen\Layout; + +//... + +public function layout(): array +{ + return [ + Layout::component(Hello::class), + ]; +} +``` + +Все компоненты могут получать данные из запроса (`query`) экрана автоматически в конструкторе. +Например, добавим информацию в экран: + +```php +use App\View\Components\Hello; +use Orchid\Screen\Layout; + +//... + +public function query(): array +{ + return [ + 'name' => 'Alexandr Chernyaev', + ]; +} + +public function layout(): array +{ + return [ + Layout::component(Hello::class), + ]; +} +``` + +Для того, чтобы имя было передано в компонент необходимо опеределить такое же имя в конструкторе компонента: + +```php +namespace App\View\Components; + +use Illuminate\View\Component; + +class Hello extends Component +{ + /** + * @var string + */ + public $name; + + /** + * Create a new component instance. + * + * @param string $name + */ + public function __construct(string $name) + { + $this->name = $name; + } + + /** + * Get the view / contents that represent the component. + * + * @return \Illuminate\View\View|string + */ + public function render() + { + return <<<'blade' +
+ Hello {{ $name }}! +
+blade; + } +} +``` + +Если вашему компоненту требуются зависимости от сервисного контейнера, вы можете перечислить их и они будут автоматически внедрены контейнером: + +```php +use Illuminate\Foundation\Application; + +/** + * Create a new component instance. + * + * @param Application $application + * @param string $name + */ +public function __construct(Application $application, string $name) +{ + $this->application = $application; + $this->name = $name; +} +``` + ## Обертка Промежуточным звеном между "Пользовательским шаблоном" и стандартными слоями может служить "Обёртка", с помощью которой From 1dbf93dc485839a39c0d96ea0b8ec868abba57c8 Mon Sep 17 00:00:00 2001 From: Alexandr Chernyaev Date: Sat, 7 Mar 2020 22:55:38 +0300 Subject: [PATCH 2/3] Update layouts.md --- source/ru/docs/layouts.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/ru/docs/layouts.md b/source/ru/docs/layouts.md index c11112075..112c3ee8c 100644 --- a/source/ru/docs/layouts.md +++ b/source/ru/docs/layouts.md @@ -592,7 +592,7 @@ blade; Если вашему компоненту требуются зависимости от сервисного контейнера, вы можете перечислить их и они будут автоматически внедрены контейнером: ```php -use Illuminate\Foundation\Application; +use Illuminate\Contracts\Foundation\Application; /** * Create a new component instance. From 1c21a37621e338311a8e20ed57aa1be365474e0e Mon Sep 17 00:00:00 2001 From: SadElephant Date: Sun, 8 Mar 2020 21:39:44 +0300 Subject: [PATCH 3/3] =?UTF-8?q?=D0=9E=D0=BF=D0=B5=D1=87=D0=B0=D1=82=D0=BA?= =?UTF-8?q?=D0=B8=20=D0=B8=20=D0=B7=D0=B0=D0=BF=D1=8F=D1=82=D1=8B=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/ru/docs/layouts.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/source/ru/docs/layouts.md b/source/ru/docs/layouts.md index 112c3ee8c..76e9f8f64 100644 --- a/source/ru/docs/layouts.md +++ b/source/ru/docs/layouts.md @@ -503,13 +503,13 @@ public function layout(): array ## Blade Components -Компоненты `Blade` могут быть вызваны в качестве слоя, для этого необходимо создать компонет с помощью `artisan` команды: +Компоненты `Blade` могут быть вызваны в качестве слоя, для этого необходимо создать компонент с помощью `artisan` команды: ```bash php artisan make:component Hello --inline ``` -Для того, чтобы вызвать его в экране необходимо использовать статический метод `Layout::component`: +Для того чтобы вызвать его в экране, необходимо использовать статический метод `Layout::component`: ```php use App\View\Components\Hello; @@ -549,7 +549,7 @@ public function layout(): array } ``` -Для того, чтобы имя было передано в компонент необходимо опеределить такое же имя в конструкторе компонента: +Для того чтобы имя было передано в компонент, необходимо определить такое же имя в конструкторе компонента: ```php namespace App\View\Components; @@ -647,7 +647,7 @@ public function layout(): array ## Расширение слоёв -Класс `Layouts` является группирующим нескольких различных, для того, что бы добавить в него новую возможность достаточно указать её в сервис провайдере как: +Класс `Layouts` является группирующим нескольких различных. Для того что бы добавить в него новую возможность, достаточно указать её в сервис провайдере как: ```php use Orchid\Screen\Layouts\Base;