Skip to content

Commit

Permalink
[compare] 1fe91ba...e877592
Browse files Browse the repository at this point in the history
  • Loading branch information
russsiq committed Jan 14, 2022
1 parent cc5080f commit 373dc68
Show file tree
Hide file tree
Showing 29 changed files with 221 additions and 46 deletions.
2 changes: 1 addition & 1 deletion docs/artisan.md
Original file line number Diff line number Diff line change
Expand Up @@ -300,7 +300,7 @@ Tinker использует список «разрешенных» команд
*/
protected $signature = 'mail:send
{user : The ID of the user}
{--queue= : Whether the job should be queued}';
{--queue : Whether the job should be queued}';

<a name="command-io"></a>
## Ввод/вывод команды
Expand Down
16 changes: 16 additions & 0 deletions docs/authorization.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
- [Авторизация действий через шлюзы](#authorizing-actions-via-gates)
- [Ответы шлюза](#gate-responses)
- [Хуки шлюзов](#intercepting-gate-checks)
- [Упрощенная авторизация](#inline-authorization)
- [Создание политик](#creating-policies)
- [Генерация политик](#generating-policies)
- [Регистрация политик](#registering-policies)
Expand Down Expand Up @@ -219,6 +220,21 @@ Laravel предлагает два основных способа автори

Подобно методу `before`, если замыкание `after` возвращает результат, отличный от `null`, то этот результат и будет считаться результатом проверки авторизации.

<a name="inline-authorization"></a>
### Упрощенная авторизация

Вы можете определить авторизован ли текущий аутентифицированный пользователь для выполнения конкретного действия без написания специального шлюза, соответствующего этому действию. Laravel позволяет вам выполнять такие типы «упрощенных» проверок авторизации с помощью методов `Gate::allowIf` и `Gate::denyIf`:

```php
use Illuminate\Support\Facades\Auth;

Gate::allowIf(fn ($user) => $user->isAdministrator());

Gate::denyIf(fn ($user) => $user->banned());
```

Если действие не авторизовано или пользователь в настоящее время не аутентифицирован, то Laravel автоматически выбросит исключение `Illuminate\Auth\Access\AuthorizationException`. Экземпляры `AuthorizationException` автоматически преобразуются в `403` HTTP-ответ обработчиком исключений Laravel.

<a name="creating-policies"></a>
## Создание политик

Expand Down
8 changes: 5 additions & 3 deletions docs/billing.md
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@
<a name="introduction"></a>
## Introduction

Laravel Cashier provides an expressive, fluent interface to [Stripe's](https://stripe.com) subscription billing services. It handles almost all of the boilerplate subscription billing code you are dreading writing. In addition to basic subscription management, Cashier can handle coupons, swapping subscription, subscription "quantities", cancellation grace periods, and even generate invoice PDFs.
[Laravel Cashier Stripe](https://github.com/laravel/cashier-stripe) provides an expressive, fluent interface to [Stripe's](https://stripe.com) subscription billing services. It handles almost all of the boilerplate subscription billing code you are dreading writing. In addition to basic subscription management, Cashier can handle coupons, swapping subscription, subscription "quantities", cancellation grace periods, and even generate invoice PDFs.

<a name="upgrading-cashier"></a>
## Upgrading Cashier
Expand Down Expand Up @@ -330,7 +330,9 @@ To automate this, you may define an event listener on your billable model that r
protected static function booted()
{
static::updated(queueable(function ($customer) {
$customer->syncStripeCustomerDetails();
if ($customer->hasStripeId()) {
$customer->syncStripeCustomerDetails();
}
}));
}

Expand Down Expand Up @@ -1349,7 +1351,7 @@ By default, the created webhook will point to the URL defined by the `APP_URL` e

The webhook that is created will use the Stripe API version that your version of Cashier is compatible with. If you would like to use a different Stripe version, you may provide the `--api-version` option:

php artisan cashier:webhook --app-version="2019-12-03"
php artisan cashier:webhook --api-version="2019-12-03"

After creation, the webhook will be immediately active. If you wish to create the webhook but have it disabled until you're ready, you may provide the `--disabled` option when invoking the command:

Expand Down
6 changes: 3 additions & 3 deletions docs/broadcasting.md
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,7 @@ The [laravel-websockets](https://github.com/beyondcode/laravel-websockets) packa
<a name="client-pusher-channels"></a>
### Pusher Channels

Laravel Echo – это JavaScript-библиотека, которая позволяет безболезненно подписаться на каналы и прослушивать события, транслируемые вашим драйвером трансляции на стороне сервера. Вы можете установить Echo через менеджер пакетов NPM. В этом примере мы также установим пакет `pusher-js`, так как мы будем использовать вещатель Pusher Channels:
[Laravel Echo](https://github.com/laravel/echo) – это JavaScript-библиотека, которая позволяет безболезненно подписаться на каналы и прослушивать события, транслируемые вашим драйвером трансляции на стороне сервера. Вы можете установить Echo через менеджер пакетов NPM. В этом примере мы также установим пакет `pusher-js`, так как мы будем использовать вещатель Pusher Channels:

```bash
npm install --save-dev laravel-echo pusher-js
Expand Down Expand Up @@ -180,7 +180,7 @@ window.Echo = new Echo({
<a name="client-ably"></a>
### Ably

Laravel Echo – это JavaScript-библиотека, которая позволяет безболезненно подписаться на каналы и прослушивать события, транслируемые вашим драйвером трансляции на стороне сервера. Вы можете установить Echo через менеджер пакетов NPM. В этом примере мы также установим пакет `pusher-js`.
[Laravel Echo](https://github.com/laravel/echo) – это JavaScript-библиотека, которая позволяет безболезненно подписаться на каналы и прослушивать события, транслируемые вашим драйвером трансляции на стороне сервера. Вы можете установить Echo через менеджер пакетов NPM. В этом примере мы также установим пакет `pusher-js`.

Вы можете задаться вопросом, зачем нам устанавливать библиотеку `pusher-js` JavaScript, даже если мы используем Ably для трансляции наших событий. К счастью, Ably имеет режим совместимости Pusher, который позволяет нам использовать протокол Pusher при прослушивании событий в нашем клиентском приложении:

Expand Down Expand Up @@ -292,7 +292,7 @@ window.Echo = new Echo({
<a name="listening-for-event-broadcasts"></a>
#### Прослушивание трансляций событий

Далее все, что остается, – это прослушивать событие в нашем JavaScript-приложении. Мы можем сделать это с помощью Laravel Echo. Во-первых, мы будем использовать метод `private` для подписки на частный канал. Затем мы можем использовать метод `listen` для прослушивания события `OrderShipmentStatusUpdated`. По умолчанию все публичные свойства события будут включены в трансляцию события:
Далее все, что остается, – это прослушивать событие в нашем JavaScript-приложении. Мы можем сделать это с помощью [Laravel Echo](#client-side-installation). Во-первых, мы будем использовать метод `private` для подписки на частный канал. Затем мы можем использовать метод `listen` для прослушивания события `OrderShipmentStatusUpdated`. По умолчанию все публичные свойства события будут включены в трансляцию события:

```js
Echo.private(`orders.${orderId}`)
Expand Down
2 changes: 1 addition & 1 deletion docs/cashier-paddle.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@
<a name="introduction"></a>
## Introduction

Laravel Cashier Paddle provides an expressive, fluent interface to [Paddle's](https://paddle.com) subscription billing services. It handles almost all of the boilerplate subscription billing code you are dreading. In addition to basic subscription management, Cashier can handle: coupons, swapping subscription, subscription "quantities", cancellation grace periods, and more.
[Laravel Cashier Paddle](https://github.com/laravel/cashier-paddle) provides an expressive, fluent interface to [Paddle's](https://paddle.com) subscription billing services. It handles almost all of the boilerplate subscription billing code you are dreading. In addition to basic subscription management, Cashier can handle: coupons, swapping subscription, subscription "quantities", cancellation grace periods, and more.

While working with Cashier we recommend you also review Paddle's [user guides](https://developer.paddle.com/guides) and [API documentation](https://developer.paddle.com/api-reference/intro).

Expand Down
53 changes: 47 additions & 6 deletions docs/collections.md
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,7 @@
- [diff](#method-diff)
- [diffAssoc](#method-diffassoc)
- [diffKeys](#method-diffkeys)
- [doesntContain](#method-doesntcontain)
- [dump](#method-dump)
- [duplicates](#method-duplicates)
- [duplicatesStrict](#method-duplicatesstrict)
Expand Down Expand Up @@ -228,11 +229,11 @@
## Список методов

<!-- <style>
#collection-method code {
.collection-method code {
font-size: 14px;
}
#collection-method:not(.first-collection-method) {
.collection-method:not(.first-collection-method) {
margin-top: 50px;
}
</style> -->
Expand Down Expand Up @@ -386,7 +387,7 @@
<a name="method-contains"></a>
#### `contains()`

Метод `contains` определяет, содержит ли коллекция переданный элемент. Вы также можете передать замыкание в `contains`, чтобы определить, существует ли в коллекции элемент, соответствующий указанному критерию истинности:
Метод `contains` определяет присутствие переданного элемента в коллекции. Вы также можете передать замыкание методу `contains`, чтобы определить присутствие элемента с указанным критерием истинности в коллекции:

$collection = collect([1, 2, 3, 4, 5]);

Expand All @@ -396,7 +397,7 @@

// false

Как вариант, вы можете передать строку методу `contains`, чтобы определить, содержит ли коллекция указанное значение элемента:
Как вариант, вы можете передать строку методу `contains`, чтобы определить присутствие элемента с указанным значением в коллекции:

$collection = collect(['name' => 'Desk', 'price' => 100]);

Expand All @@ -408,7 +409,7 @@

// false

Вы также можете передать пару ключ / значение методу `contains`, который определит, существует ли данная пара в коллекции:
Вы также можете передать пару ключ / значение методу `contains`, который определит присутствие переданной пары в коллекции:

$collection = collect([
['product' => 'Desk', 'price' => 200],
Expand All @@ -421,6 +422,8 @@

Метод `contains` использует «гибкое» сравнение при проверке значений элементов, то есть строка с целочисленным значением будет считаться равной целому числу того же значения. Используйте метод [`containsStrict`](#method-containsstrict) для фильтрации с использованием «жесткого» сравнения.

Противоположным методу `contains` является метод [doesntContain](#method-doesntcontain).

<a name="method-containsstrict"></a>
#### `containsStrict()`

Expand Down Expand Up @@ -584,6 +587,44 @@

// ['one' => 10, 'three' => 30, 'five' => 50]

<a name="method-doesntcontain"></a>
#### `doesntContain()`

Метод `doesntContain` определяет отсутствие переданного элемента в коллекции. Вы также можете передать замыкание методу `doesntContain`, чтобы определить отсутствие элемента с указанным критерием истинности в коллекции:

$collection = collect([1, 2, 3, 4, 5]);

$collection->doesntContain(function ($value, $key) {
return $value < 5;
});

// false

Как вариант, вы можете передать строку методу `doesntContain`, чтобы определить отсутствие элемента с указанным значением в коллекции:

$collection = collect(['name' => 'Desk', 'price' => 100]);

$collection->doesntContain('Table');

// true

$collection->doesntContain('Desk');

// false

Вы также можете передать пару ключ / значение методу `doesntContain`, который определит отсутствие переданной пары в коллекции:

$collection = collect([
['product' => 'Desk', 'price' => 200],
['product' => 'Chair', 'price' => 100],
]);

$collection->doesntContain('product', 'Bookcase');

// true

Метод `doesntContain` использует «гибкое» сравнение при проверке значений элементов, то есть строка с целочисленным значением будет считаться равной целому числу того же значения.

<a name="method-dump"></a>
#### `dump()`

Expand Down Expand Up @@ -2102,7 +2143,7 @@
]
*/

Метод `sort` принимает [флаги типа сортировки](https://www.php.net/manual/ru/function.sort.php) в качестве второго аргумента:
Метод `sortBy` принимает [флаги типа сортировки](https://www.php.net/manual/ru/function.sort.php) в качестве второго аргумента:

$collection = collect([
['title' => 'Item 1'],
Expand Down
8 changes: 8 additions & 0 deletions docs/database-testing.md
Original file line number Diff line number Diff line change
Expand Up @@ -535,6 +535,7 @@ Laravel предлагает множество полезных инструм
namespace Tests\Feature;

use Database\Seeders\OrderStatusSeeder;
use Database\Seeders\TransactionStatusSeeder;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Foundation\Testing\WithoutMiddleware;
use Tests\TestCase;
Expand All @@ -557,6 +558,13 @@ Laravel предлагает множество полезных инструм
$this->seed(OrderStatusSeeder::class);

// ...

// Запустить массив определенных наполнителей ...
$this->seed([
OrderStatusSeeder::class,
TransactionStatusSeeder::class,
// ...
]);
}
}

Expand Down
2 changes: 1 addition & 1 deletion docs/dusk.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@
<a name="introduction"></a>
## Введение

Laravel Dusk предлагает выразительный и простой в использовании API для автоматизации поведения браузера и тестирования. По умолчанию Dusk не требует установки JDK или Selenium на ваш локальный компьютер. Вместо этого Dusk использует автономную установку [ChromeDriver](https://sites.google.com/chromium.org/driver). По желанию вы можете использовать любой другой драйвер, совместимый с Selenium.
[Laravel Dusk](https://github.com/laravel/dusk) предлагает выразительный и простой в использовании API для автоматизации поведения браузера и тестирования. По умолчанию Dusk не требует установки JDK или Selenium на ваш локальный компьютер. Вместо этого Dusk использует автономную установку [ChromeDriver](https://sites.google.com/chromium.org/driver). По желанию вы можете использовать любой другой драйвер, совместимый с Selenium.

<a name="installation"></a>
## Установка
Expand Down
8 changes: 8 additions & 0 deletions docs/eloquent-collections.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,14 @@
#collection-method-list a {
display: block;
}
.collection-method code {
font-size: 14px;
}
.collection-method:not(.first-collection-method) {
margin-top: 50px;
}
</style> -->

<!-- <div id="collection-method-list" markdown="1"> -->
Expand Down
2 changes: 1 addition & 1 deletion docs/eloquent-mutators.md
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@
- `datetime`
- `immutable_date`
- `immutable_datetime`
- `decimal:<digits>`
- `decimal:`<code>&lt;digits&gt;</code>
- `double`
- `encrypted`
- `encrypted:array`
Expand Down
2 changes: 2 additions & 0 deletions docs/eloquent.md
Original file line number Diff line number Diff line change
Expand Up @@ -388,6 +388,8 @@ Flight::where('departed', true)
->each->update(['departed' => false]);
```

Вы можете фильтровать результаты по убыванию `id`, используя метод `lazyByIdDesc`.

<a name="cursors"></a>
### Курсоры

Expand Down
Loading

0 comments on commit 373dc68

Please sign in to comment.