Страница 1 из 1

Url

Добавлено: 2018.03.06, 15:57
Auramel
Работал с формами. Все работает :D
Недавно, обратил внимание на Url, есть следующее правило:

Код: Выделить всё

'<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>'
то есть, все делается, примерно, так:

Код: Выделить всё

/user/view/1
есть view (форма)

Код: Выделить всё

<?= Html::beginForm(['can-update', 'id' => $form->id], 'POST', [
    'class' => 'form__block'
]) ?>
в ней же, ради debug, написал

Код: Выделить всё

print_r(\yii\helpers\Url::to(['all', 'id' => 1]));
Url формы выглядит так:

Код: Выделить всё

/user/can-update?id=19
Url из \yii\helpers\Url выглядит так:

Код: Выделить всё

/user/all/1
Посмотрел исходник Html::beginForm()... Там прямо на первой же строке делается

Код: Выделить всё

$action = Url::to($action);
я немного в замешательстве :)
фича или баг?

Re: Url

Добавлено: 2018.03.06, 16:30
Auramel
Кажется, я понял, что дело в названии action'а...
Если сделать

Код: Выделить всё

<?= Url::to(['qwe-update', 'id' => 123])?>
будет:

Код: Выделить всё

/user/qwe-update?id=123
А если сделать

Код: Выделить всё

<?= Url::to(['update', 'id' => 123])?>
будет:

Код: Выделить всё

/user/update/123

Re: Url

Добавлено: 2018.03.06, 16:42
Nex-Otaku
В чём вопрос-то?

Re: Url

Добавлено: 2018.03.06, 16:43
zabachok
\w не включает символ минуса. Хотите символ минуса делайте [\w\-]+

Тут больше примеров:
http://php.net/manual/ru/reference.pcre ... syntax.php

Re: Url

Добавлено: 2018.03.06, 16:48
Auramel
zabachok писал(а): 2018.03.06, 16:43 \w не включает символ минуса. Хотите символ минуса делайте [\w\-]+

Тут больше примеров:
http://php.net/manual/ru/reference.pcre ... syntax.php
Выручили :) Спасибо.