Привет, есть ли возможность сделать правила (переходы) для статуса? Есть статусы [новый, оптала, отправлен, завершен, отменен]. Как сделать, если стоит статус "новый", можно было выбрать только статусы оплата и отправлен или если стоит статус "отправлен", можно было бы только поставить статус "завершен".
что-то типо этого:
[новый=>[оптала, отправлен, завершен, отменен]]
[оптала=>[отправлен, завершен, отменен]]
[отправлен=>[завершен]]
Как сделать переходы для статуса
Re: Как сделать переходы для статуса
Посмотри этот пакет https://github.com/cebe/yii2-lifecycle-behavior
Re: Как сделать переходы для статуса
Сделал вот так:
view
model
Изначально выводиться все правильно и показывает нужные мне статусы, но проблема в том, что если я выбираю другой статус и сохраняю, сохраняется индекс 0, 1... но не название статуса... Как решить проблему?
view
Код: Выделить всё
'editableOptions' => function($model) {
/** @var $model Orders*/
return [
'placement' => 'left',
'asPopover' => true,
'header'=>'Статус',
'inputType'=>Editable::INPUT_DROPDOWN_LIST,
'data' => Orders::getAvailableState($model->Status),
'options' => ['class'=>'form-control', 'prompt'=>'Статус...'],
'submitOnEnter' => false,
];
}
Код: Выделить всё
public static function getTransitionsState()
{
$transitions = array(
self::STATUS_NEW => [self::STATUS_PAYMENT, self::STATUS_PACKAGING, self::STATUS_CANCELED],
self::STATUS_PAYMENT => [self::STATUS_PACKAGING, self::STATUS_SENT, self::STATUS_CANCELED],
self::STATUS_PACKAGING => [self::STATUS_SENT, self::STATUS_CANCELED],
self::STATUS_SENT => [self::STATUS_FINISHED],
self::STATUS_FINISHED => [self::STATUS_PAYMENT],
self::STATUS_CANCELED => [self::STATUS_FINISHED],
);
return $transitions;
}
public static function getAvailableState($state)
{
$transitions = self::getTransitionsState();
return $transitions[$state];
}
Re: Как сделать переходы для статуса
Код: Выделить всё
public static function getTransitionsState()
{
$transitions = array(
self::STATUS_NEW => [
self::STATUS_PAYMENT => self::STATUS_PAYMENT,
self::STATUS_PACKAGING => self::STATUS_PACKAGING,
self::STATUS_CANCELED => self::STATUS_CANCELED
],
...
);
return $transitions;
}
Re: Как сделать переходы для статуса
Я обязательно попробую Yii 2 lifecycle behavior. Просто хотел знать что я не так делаю, чего не хватает, в общем разобраться самому...