Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update layouts.md #49

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
108 changes: 107 additions & 1 deletion source/ru/docs/layouts.md
Original file line number Diff line number Diff line change
Expand Up @@ -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'
<div>
Hello {{ $name }}!
</div>
blade;
}
}
```

Если вашему компоненту требуются зависимости от сервисного контейнера, вы можете перечислить их и они будут автоматически внедрены контейнером:

```php
use Illuminate\Contracts\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;
}
```

## Обертка

Промежуточным звеном между "Пользовательским шаблоном" и стандартными слоями может служить "Обёртка", с помощью которой
Expand Down Expand Up @@ -541,7 +647,7 @@ public function layout(): array

## Расширение слоёв

Класс `Layouts` является группирующим нескольких различных, для того, что бы добавить в него новую возможность достаточно указать её в сервис провайдере как:
Класс `Layouts` является группирующим нескольких различных. Для того что бы добавить в него новую возможность, достаточно указать её в сервис провайдере как:

```php
use Orchid\Screen\Layouts\Base;
Expand Down