Skip to content

Commit

Permalink
[compare] [8.x] 8658e7a...94e138a
Browse files Browse the repository at this point in the history
  • Loading branch information
russsiq committed Feb 8, 2022
1 parent 8676fe5 commit 1037f73
Show file tree
Hide file tree
Showing 32 changed files with 275 additions and 76 deletions.
35 changes: 35 additions & 0 deletions docs/billing.md
Original file line number Diff line number Diff line change
Expand Up @@ -572,6 +572,10 @@ To delete a payment method, you may call the `delete` method on the `Laravel\Cas

$paymentMethod->delete();

The `deletePaymentMethod` method will delete a specific payment method from the billable model:

$user->deletePaymentMethod('pm_visa');

The `deletePaymentMethods` method will delete all of the payment method information for the billable model:

$user->deletePaymentMethods();
Expand Down Expand Up @@ -1586,6 +1590,35 @@ The `downloadInvoice` method also allows for a custom filename via its third arg

return $request->user()->downloadInvoice($invoiceId, [], 'my-invoice');

<a name="custom-invoice-render"></a>
#### Custom Invoice Renderer

Cashier also makes it possible to use a custom invoice renderer. By default, Cashier uses the `DompdfInvoiceRenderer` implementation, which utilizes the [dompdf](https://github.com/dompdf/dompdf) PHP library to generate Cashier's invoices. However, you may use any renderer you wish by implementing the `Laravel\Cashier\Contracts\InvoiceRenderer` interface. For example, you may wish to render an invoice PDF using an API call to a third-party PDF rendering service:

use Illuminate\Support\Facades\Http;
use Laravel\Cashier\Contracts\InvoiceRenderer;
use Laravel\Cashier\Invoice;

class ApiInvoiceRenderer implements InvoiceRenderer
{
/**
* Render the given invoice and return the raw PDF bytes.
*
* @param \Laravel\Cashier\Invoice. $invoice
* @param array $data
* @param array $options
* @return string
*/
public function render(Invoice $invoice, array $data = [], array $options = []): string
{
$html = $invoice->view($data)->render();

return Http::get('https://example.com/html-to-pdf', ['html' => $html])->get()->body();
}
}

Once you have implemented the invoice renderer contract, you should update the `cashier.invoices.renderer` configuration value in your application's `config/cashier.php` configuration file. This configuration value should be set to the class name of your custom renderer implementation.

<a name="checkout"></a>
## Checkout

Expand Down Expand Up @@ -1758,6 +1791,7 @@ First, you could redirect your customer to the dedicated payment confirmation pa
On the payment confirmation page, the customer will be prompted to enter their credit card information again and perform any additional actions required by Stripe, such as "3D Secure" confirmation. After confirming their payment, the user will be redirected to the URL provided by the `redirect` parameter specified above. Upon redirection, `message` (string) and `success` (integer) query string variables will be added to the URL. The payment page currently supports the following payment method types:

<div class="content-list" markdown="1">

- Credit Cards
- Alipay
- Bancontact
Expand All @@ -1766,6 +1800,7 @@ On the payment confirmation page, the customer will be prompted to enter their c
- Giropay
- iDEAL
- SEPA Direct Debit

</div>

Alternatively, you could allow Stripe to handle the payment confirmation for you. In this case, instead of redirecting to the payment confirmation page, you may [setup Stripe's automatic billing emails](https://dashboard.stripe.com/account/billing/automatic) in your Stripe dashboard. However, if an `IncompletePayment` exception is caught, you should still inform the user they will receive an email with further payment confirmation instructions.
Expand Down
6 changes: 4 additions & 2 deletions docs/blade.md
Original file line number Diff line number Diff line change
Expand Up @@ -298,7 +298,7 @@ Blade – это простой, но мощный движок шаблонов
<p>I'm looping forever.</p>
@endwhile

> {tip} При создании цикла вы можете использовать [переменную Loop](#the-loop-variable), чтобы получить информацию о цикле, например, находитесь ли вы в первой или последней итерации цикла.
> {tip} При итерации с помощью `foreach` вы можете использовать [переменную Loop](#the-loop-variable), чтобы получить информацию о цикле, например, находитесь ли вы в первой или последней итерации цикла.
Вы также можете завершить цикл или пропустить текущую итерацию, используя директивы `@continue` и `@break`:

Expand Down Expand Up @@ -327,7 +327,7 @@ Blade – это простой, но мощный движок шаблонов
<a name="the-loop-variable"></a>
### Переменная Loop

Внутри цикла доступна переменная `$loop`. Она обеспечивает доступ к некоторой полезной информации, например, индекс текущего цикла, первая это или последняя итерация цикла:
При итерации с помощью `foreach` внутри цикла доступна переменная `$loop`. Она обеспечивает доступ к некоторой полезной информации, например, индекс текущего цикла, первая это или последняя итерация цикла:

@foreach ($users as $user)
@if ($loop->first)
Expand Down Expand Up @@ -848,13 +848,15 @@ Blade отобразит следующий HTML-код:
По умолчанию некоторые ключевые слова зарезервированы для внутреннего использования Blade при визуализации компонентов. Следующие ключевые слова не могут быть определены как публичные свойства или имена методов в ваших компонентах:

<!-- <div class="content-list" markdown="1"> -->

- `data`
- `render`
- `resolveView`
- `shouldRender`
- `view`
- `withAttributes`
- `withName`

<!-- </div> -->

<a name="slots"></a>
Expand Down
2 changes: 1 addition & 1 deletion docs/broadcasting.md
Original file line number Diff line number Diff line change
Expand Up @@ -285,7 +285,7 @@ window.Echo = new Echo({
<a name="example-application-authorizing-channels"></a>
#### Авторизация каналов

Помните, что пользователи должны иметь разрешение на прослушивание частных каналов. Мы можем определить наши правила авторизации каналов в файле `routes/channels.php` нашего приложения. В этом примере нам нужно убедиться, что любой пользователь, пытающийся прослушивать частный канал `order.1`, на самом деле является создателем заказа:
Помните, что пользователи должны иметь разрешение на прослушивание частных каналов. Мы можем определить наши правила авторизации каналов в файле `routes/channels.php` нашего приложения. В этом примере нам нужно убедиться, что любой пользователь, пытающийся прослушивать частный канал `orders.1`, на самом деле является создателем заказа:

use App\Models\Order;

Expand Down
2 changes: 2 additions & 0 deletions docs/cashier-paddle.md
Original file line number Diff line number Diff line change
Expand Up @@ -995,11 +995,13 @@ Once your listener has been defined, you may register it within your application
Cashier also emit events dedicated to the type of the received webhook. In addition to the full payload from Paddle, they also contain the relevant models that were used to process the webhook such as the billable model, the subscription, or the receipt:

<div class="content-list" markdown="1">

- `Laravel\Paddle\Events\PaymentSucceeded`
- `Laravel\Paddle\Events\SubscriptionPaymentSucceeded`
- `Laravel\Paddle\Events\SubscriptionCreated`
- `Laravel\Paddle\Events\SubscriptionUpdated`
- `Laravel\Paddle\Events\SubscriptionCancelled`

</div>

You can also override the default, built-in webhook route by defining the `CASHIER_WEBHOOK` environment variable in your application's `.env` file. This value should be the full URL to your webhook route and needs to match the URL set in your Paddle control panel:
Expand Down
26 changes: 26 additions & 0 deletions docs/collections.md
Original file line number Diff line number Diff line change
Expand Up @@ -187,6 +187,7 @@
- [sortDesc](#method-sortdesc)
- [sortKeys](#method-sortkeys)
- [sortKeysDesc](#method-sortkeysdesc)
- [sortKeysUsing](#method-sortkeysusing)
- [splice](#method-splice)
- [split](#method-split)
- [splitIn](#method-splitin)
Expand Down Expand Up @@ -2303,6 +2304,31 @@

Этот метод имеет ту же сигнатуру, что и метод [`sortKeys`](#method-sortkeys), но отсортирует коллекцию в обратном порядке.

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

Метод `sortKeysUsing` сортирует коллекцию по ключам ассоциативного массива с помощью замыканиня:

$collection = collect([
'ID' => 22345,
'first' => 'John',
'last' => 'Doe',
]);

$sorted = $collection->sortKeysUsing('strnatcasecmp');

$sorted->all();

/*
[
'first' => 'John',
'ID' => 22345,
'last' => 'Doe',
]
*/

Замыкание должно быть функцией сравнения, возвращающей целое число, которое меньше, равно или больше нуля. Для получения дополнительной информации обратитесь к документации по [`uksort`](https://www.php.net/manual/ru/function.uksort.php#refsect1-function.uksort-parameters), которая является функцией PHP, используемой методом `sortKeysUsing`.

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

Expand Down
12 changes: 9 additions & 3 deletions docs/contributions.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
В управлении исходным кодом Laravel используется GitHub, и для каждого проекта есть репозитории:

<!-- <div class="content-list" markdown="1"> -->

- [Приложение Laravel](https://github.com/laravel/laravel)
- [Логотипы Laravel](https://github.com/laravel/art)
- [Документация Laravel](https://github.com/laravel/docs)
Expand All @@ -43,6 +44,7 @@
- [Пакет Laravel Socialite](https://github.com/laravel/socialite)
- [Пакет Laravel Telescope](https://github.com/laravel/telescope)
- [Исходники официального сайта Laravel](https://github.com/laravel/laravel.com-next)

<!-- </div> -->

<a name="support-questions"></a>
Expand All @@ -51,21 +53,23 @@
Трекеры с тикетами проблем Laravel на GitHub не предназначены для предоставления помощи или поддержки Laravel. Вместо этого используйте один из следующих каналов:

<!-- <div class="content-list" markdown="1"> -->

- [Обсуждения на GitHub](https://github.com/laravel/framework/discussions)
- [Форум Laracasts](https://laracasts.com/discuss)
- [Форум Laravel.io](https://laravel.io/forum)
- [StackOverflow](https://stackoverflow.com/questions/tagged/laravel)
- [Discord](https://discordapp.com/invite/mPZNm7A)
- [Discord](https://discord.gg/laravel)
- [Larachat](https://larachat.co)
- [IRC](https://web.libera.chat/?nick=artisan&channels=#laravel)

<!-- </div> -->

<a name="core-development-discussion"></a>
## Обсуждение разработки ядра

Вы можете предлагать новый функционал или улучшения существующего поведения Laravel в репозитории фреймворка Laravel на [доске обсуждений GitHub](https://github.com/laravel/framework/discussions). Если вы предлагаете новый функционал, то пожалуйста, будьте готовы реализовать по крайней мере часть кода, который потребуется для его завершения.

Неформальное обсуждение ошибок, нового функционала и реализаций существующего происходит на канале `#internals` сервера [Laravel Discord](https://discordapp.com/invite/mPZNm7A). Тейлор Отвелл, сопровождающий Laravel, обычно присутствует на канале в будние дни с 8:00 до 17:00 (UTC-06:00 или Америка / Чикаго) и от случая к случаю – в остальное время.
Неформальное обсуждение ошибок, нового функционала и реализаций существующего происходит на канале `#internals` сервера [Laravel Discord](https://discord.gg/laravel). Тейлор Отвелл, сопровождающий Laravel, обычно присутствует на канале в будние дни с 8:00 до 17:00 (UTC-06:00 или Америка / Чикаго) и от случая к случаю – в остальное время.

<a name="which-branch"></a>
## Какую ветку выбрать при запросах слияния?
Expand All @@ -76,7 +80,7 @@

**Мажорный** новый функционал всегда следует отправлять в ветку `master`, содержащую предстоящий релиз.

Если вы не уверены, квалифицируется ли ваш функционал как мажорный или минорный, то спросите Тейлора Отвелла на канале `#internals` сервера [Laravel Discord](https://discordapp.com/invite/mPZNm7A).
Если вы не уверены, квалифицируется ли ваш функционал как мажорный или минорный, то спросите Тейлора Отвелла на канале `#internals` сервера [Laravel Discord](https://discord.gg/laravel).

<a name="compiled-assets"></a>
## Скомпилированные ресурсы исходников
Expand Down Expand Up @@ -124,8 +128,10 @@ Laravel следует стандарту кодирования [PSR-2](https:/
Кодекс поведения Laravel основан на кодексе поведения Ruby. О любых нарушениях кодекса поведения можно сообщить Тейлору Отвеллу ([email protected]):

<!-- <div class="content-list" markdown="1"> -->

- Участники будут терпимо относиться к противоположным взглядам.
- Участники должны гарантировать, что их язык и действия не содержат личных нападок и пренебрежительных личных замечаний.
- Толкуя слова и действия других, участники всегда должны исходить из добрых намерений.
- Не допускается поведение, которое можно обоснованно считать преследованием.

<!-- </div> -->
5 changes: 4 additions & 1 deletion docs/database.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,16 @@
<a name="introduction"></a>
## Введение

Почти каждое современное веб-приложение взаимодействует с базой данных. Laravel делает взаимодействие с базами данных чрезвычайно простым через поддержку множества баз данных, используя либо сырой SQL [построителя запросов](queries.md), либо [Eloquent ORM](eloquent.md). В настоящее время Laravel обеспечивает поддержку четырех баз данных:
Почти каждое современное веб-приложение взаимодействует с базой данных. Laravel делает взаимодействие с базами данных чрезвычайно простым через поддержку множества баз данных, используя либо сырой SQL [построителя запросов](queries.md), либо [Eloquent ORM](eloquent.md). В настоящее время Laravel обеспечивает поддержку пяти баз данных:

<!-- <div class="content-list" markdown="1"> -->

- MariaDB 10.2+ ([Политика версий](https://mariadb.org/about/#maintenance-policy))
- MySQL 5.7+ ([Политика версий](https://en.wikipedia.org/wiki/MySQL#Release_history))
- PostgreSQL 9.6+ ([Политика версий](https://www.postgresql.org/support/versioning/))
- SQLite 3.8.8+
- SQL Server 2017+ ([Политика версий](https://docs.microsoft.com/en-us/lifecycle/products/?products=sql-server))

<!-- </div> -->

<a name="configuration"></a>
Expand Down
2 changes: 2 additions & 0 deletions docs/deployment.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
Фреймворк Laravel имеет несколько системных требований. Вы должны убедиться, что ваш веб-сервер имеет следующую минимальную версию PHP и расширения:

<!-- <div class="content-list" markdown="1"> -->

- PHP >= 7.3
- Расширение PHP BCMath
- Расширение PHP Ctype
Expand All @@ -33,6 +34,7 @@
- Расширение PHP PDO
- Расширение PHP Tokenizer
- Расширение PHP XML

<!-- </div> -->

<a name="server-configuration"></a>
Expand Down
2 changes: 2 additions & 0 deletions docs/dusk.md
Original file line number Diff line number Diff line change
Expand Up @@ -883,6 +883,7 @@ Dusk содержит множество утверждений, которые
</style> -->

<!-- <div class="collection-method-list" markdown="1"> -->

- [assertTitle](#assert-title)
- [assertTitleContains](#assert-title-contains)
- [assertUrlIs](#assert-url-is)
Expand Down Expand Up @@ -956,6 +957,7 @@ Dusk содержит множество утверждений, которые
- [assertVueIsNot](#assert-vue-is-not)
- [assertVueContains](#assert-vue-contains)
- [assertVueDoesNotContain](#assert-vue-does-not-contain)

<!-- </div> -->

<a name="assert-title"></a>
Expand Down
2 changes: 2 additions & 0 deletions docs/eloquent-mutators.md
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,7 @@
Свойство `$casts` должно быть массивом, где ключ – это имя преобразуемого атрибута, а значение – это тип, к которому вы хотите привести столбец. Поддерживаемые типы преобразования:

<!-- <div class="content-list" markdown="1"> -->

- `array`
- `AsStringable::class`
- `boolean`
Expand All @@ -139,6 +140,7 @@
- `real`
- `string`
- `timestamp`

<!-- </div> -->

Чтобы продемонстрировать преобразование атрибутов, давайте преобразуем атрибут `is_admin`, который хранится в нашей базе данных в виде целого числа (`0` или `1`), в логическое значение:
Expand Down
2 changes: 2 additions & 0 deletions docs/eloquent-relationships.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@
Таблицы базы данных часто связаны друг с другом. Например, пост в блоге может содержать много комментариев или заказ может быть связан с пользователем, который его разместил. Eloquent упрощает управление этими отношениями и работу с ними, а также поддерживает множество общих отношений:

<!-- <div class="content-list" markdown="1"> -->

- [Один к одному](#one-to-one)
- [Один ко многим](#one-to-many)
- [Многие ко многим](#many-to-many)
Expand All @@ -53,6 +54,7 @@
- [Один к одному (полиморфное)](#one-to-one-polymorphic-relations)
- [Один ко многим (полиморфное)](#one-to-many-polymorphic-relations)
- [Многие ко многим (полиморфное)](#many-to-many-polymorphic-relations)

<!-- </div> -->

<a name="defining-relationships"></a>
Expand Down
Loading

0 comments on commit 1037f73

Please sign in to comment.