Skip to content

Commit

Permalink
[compare] [9.x] b99e084...773abc7
Browse files Browse the repository at this point in the history
  • Loading branch information
russsiq committed Apr 21, 2022
1 parent 526d2be commit de3817d
Show file tree
Hide file tree
Showing 21 changed files with 262 additions and 113 deletions.
2 changes: 1 addition & 1 deletion docs/authentication.md
Original file line number Diff line number Diff line change
Expand Up @@ -251,7 +251,7 @@ Laravel Breeze – это минимальная и простая реализ

return back()->withErrors([
'email' => 'The provided credentials do not match our records.',
])->onlyInput(['email']);
])->onlyInput('email');
}
}

Expand Down
10 changes: 8 additions & 2 deletions docs/billing.md
Original file line number Diff line number Diff line change
Expand Up @@ -1509,13 +1509,19 @@ The invoice will be immediately charged against the user's default payment metho
'default_tax_rates' => ['txr_id'],
]);

Similarly to `invoicePrice`, you may use the `tabPrice` method to create a one-time charge for multiple items (up to 250 items per invoice) by adding them to the customer's "tab" and then invoicing the customer. For example, we may invoice a customer for five shirts and two mugs:

$user->tabPrice('price_tshirt', 5);
$user->tabPrice('price_mug', 2);
$user->invoice();

Alternatively, you may use the `invoiceFor` method to make a "one-off" charge against the customer's default payment method:

$user->invoiceFor('One Time Fee', 500);

Although the `invoiceFor` method is available for you to use, it is recommendeded that you use the `invoicePrice` method with pre-defined prices. By doing so, you will have access to better analytics and data within your Stripe dashboard regarding your sales on a per-product basis.
Although the `invoiceFor` method is available for you to use, it is recommendeded that you use the `invoicePrice` and `tabPrice` methods with pre-defined prices. By doing so, you will have access to better analytics and data within your Stripe dashboard regarding your sales on a per-product basis.

> {note} The `invoicePrice` and `invoiceFor` methods will create a Stripe invoice which will retry failed billing attempts. If you do not want invoices to retry failed charges, you will need to close them using the Stripe API after the first failed charge.
> {note} The `invoice`, `invoicePrice`, and `invoiceFor` methods will create a Stripe invoice which will retry failed billing attempts. If you do not want invoices to retry failed charges, you will need to close them using the Stripe API after the first failed charge.
<a name="refunding-charges"></a>
### Refunding Charges
Expand Down
137 changes: 83 additions & 54 deletions docs/blade.md

Large diffs are not rendered by default.

28 changes: 27 additions & 1 deletion docs/collections.md
Original file line number Diff line number Diff line change
Expand Up @@ -138,6 +138,7 @@
- [keyBy](#method-keyby)
- [keys](#method-keys)
- [last](#method-last)
- [lazy](#method-lazy)
- [macro](#method-macro)
- [make](#method-make)
- [map](#method-map)
Expand Down Expand Up @@ -1033,7 +1034,7 @@

$result = $data->groupBy(['skill', function ($item) {
return $item['roles'];
}], $preserveKeys = true);
}], preserveKeys: true);

/*
[
Expand Down Expand Up @@ -1229,6 +1230,31 @@

// 4

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

Метод `lazy` возвращает новый экземпляр [`LazyCollection`](#lazy-collections) из массива элементов:

$lazyCollection = collect([1, 2, 3, 4])->lazy();

get_class($lazyCollection);

// Illuminate\Support\LazyCollection

$lazyCollection->all();

// [1, 2, 3, 4]

Это особенно полезно, когда вам нужно выполнить преобразования «коллекции», содержащей много элементов:

$count = $hugeCollection
->lazy()
->where('country', 'FR')
->where('balance', '>', '100')
->count();

Преобразовывая коллекцию в `LazyCollection`, мы избегаем необходимости в выделении дополнительной памяти. Хотя исходная коллекция по-прежнему сохраняет _свои_ значения в памяти, последующая фильтрация этого не делает. Поэтому при фильтрации результатов коллекции практически не выделяется дополнительная память.

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

Expand Down
2 changes: 1 addition & 1 deletion docs/container.md
Original file line number Diff line number Diff line change
Expand Up @@ -339,7 +339,7 @@
<a name="extending-bindings"></a>
### Расширяемость связываний

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

$this->app->extend(Service::class, function ($service, $app) {
return new DecoratedService($service);
Expand Down
9 changes: 9 additions & 0 deletions docs/database.md
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,15 @@ driver://username:password@host:port/database?options
echo $user->name;
}

<a name="selecting-scalar-values"></a>
#### Выборка скалярных значений

Иногда запрос к базе данных может вернуть единственное скалярное значение. Вместо того, чтобы извлекать результат из объекта записи, Laravel позволяет вам получить это значение напрямую, используя метод `scalar`:

$burgers = DB::scalar(
"select count(case when food = 'burger' then 1 end) as burgers from menu"
);

<a name="using-named-bindings"></a>
#### Использование именованных псевдопеременных

Expand Down
26 changes: 26 additions & 0 deletions docs/dusk.md
Original file line number Diff line number Diff line change
Expand Up @@ -863,6 +863,32 @@ Dusk содержит различные методы для взаимодей
// Ожидание несоответствия атрибута компонента указанному значению ...
$browser->waitUntilVueIsNot('user.name', null, '@user');

<a name="waiting-for-javascript-events"></a>
#### Ожидание событий JavaScript

Метод `waitForEvent` можно использовать для приостановки выполнения теста до тех пор, пока не произойдет событие JavaScript:

$browser->waitForEvent('load');

Слушатель событий присоединен к текущей области видимости, которая по умолчанию является элементом `body`. При использовании селектора с областью действия слушатель событий будет прикреплен к соответствующему элементу:

$browser->with('iframe', function ($iframe) {
// Ожидание события загрузки элемента iframe ...
$iframe->waitForEvent('load');
});

Вы также можете предоставить селектор в качестве второго аргумента метода `waitForEvent`, чтобы прикрепить слушатель событий к определенному элементу:

$browser->waitForEvent('load', '.selector');

Вы также можете дождаться событий для объектов `document` и `window`:

// Ожидание прокрутки документа ...
$browser->waitForEvent('scroll', 'document');

// Ожидание не более пяти секунд изменений размера окна ...
$browser->waitForEvent('resize', 'window', 5);

<a name="waiting-with-a-callback"></a>
#### Использование замыканий при ожидании

Expand Down
24 changes: 23 additions & 1 deletion docs/errors.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
- [Конфигурирование](#configuration)
- [Обработчик исключений](#the-exception-handler)
- [Отчет об исключениях](#reporting-exceptions)
- [Уровни регистрации исключений](#exception-log-levels)
- [Игнорирование исключений по типу](#ignoring-exceptions-by-type)
- [Отображение исключений](#rendering-exceptions)
- [Отчетные и отображаемые исключения](#renderable-exceptions)
Expand Down Expand Up @@ -117,6 +118,27 @@
}
}

<a name="exception-log-levels"></a>
### Уровни регистрации исключений

Когда сообщения записываются в [журналы](logging.md) вашего приложения, то сообщения записываются для указанного [уровня регистрации](logging.md#log-levels), определяющий серьезность или важность регистрируемого сообщения.

Как отмечалось выше, даже когда вы определяете пользовательское замыкание для отчета об исключении с помощью метода `reportable`, Laravel все равно будет регистрировать исключение, используя конфигурацию ведения журнала по умолчанию для приложения; поскольку уровень регистрации иногда может влиять на каналы, на которых регистрируется сообщение, то вы можете настроить уровень регистрации, на котором регистрируются определенные исключения.

Для этого вы можете определить массив типов исключений и связанных с ними уровней регистрации в свойстве `$levels` обработчика исключений вашего приложения:

use PDOException;
use Psr\Log\LogLevel;

/**
* Список типов исключений с соответствующими пользовательскими уровнями регистрации.
*
* @var array<class-string<\Throwable>, \Psr\Log\LogLevel::*>
*/
protected $levels = [
PDOException::class => LogLevel::CRITICAL,
];

<a name="ignoring-exceptions-by-type"></a>
### Игнорирование исключений по типу

Expand All @@ -127,7 +149,7 @@
/**
* Список типов исключений, о которых не следует сообщать.
*
* @var array
* @var array<int, class-string<\Throwable>>
*/
protected $dontReport = [
InvalidOrderException::class,
Expand Down
8 changes: 8 additions & 0 deletions docs/helpers.md
Original file line number Diff line number Diff line change
Expand Up @@ -3487,6 +3487,14 @@ Str::of('Hello, world!')->wordCount(); // 2

$value = old('value', 'default');

Поскольку «значение по умолчанию», предоставляемое в качестве второго аргумента функции `old`, часто является атрибутом модели Eloquent, то Laravel позволяет вам просто передать всю модель Eloquent в качестве второго аргумента функции `old`. При этом Laravel будет предполагать, что первый аргумент, предоставленный функции `old`, является именем атрибута Eloquent, который следует считать «значением по умолчанию»:

{{ old('name', $user->name) }}

// Эквивалентно ...

{{ old('name', $user) }}

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

Expand Down
2 changes: 1 addition & 1 deletion docs/http-client.md
Original file line number Diff line number Diff line change
Expand Up @@ -188,7 +188,7 @@ composer require guzzlehttp/guzzle
Если попытка запроса окажется неуспешной, то вы можете внести изменения в запрос до того, как будет сделана новая попытка. Вы можете добиться этого, изменив аргумент запроса, предоставленный вызываемому объекту, который вы предоставили методу `retry`. Например, вы можете повторить запрос с новым токеном авторизации, если первая попытка вернула ошибку аутентификации:

$response = Http::withToken($this->getToken())->retry(2, 0, function ($exception, $request) {
if (! $exception instanceof RequestException || $request->response->status() !== 401) {
if (! $exception instanceof RequestException || $exception->response->status() !== 401) {
return false;
}

Expand Down
Loading

0 comments on commit de3817d

Please sign in to comment.