myks92
@myks92
Нашёл решение — пометь вопрос ответом!

Как заменить подобный код?

Всем привет! Как можно заменить подобные использования и вынести их из контроллера в модель?

....
public function actionCreate()
    {
       $event_id = Registration::getEventId();//Обращение к модулю. В нем получаем event_id
        $model = new RegBattle(['event_id'=>$event_id])
///другое...
}
....


public function actionCreate()
   ....
public function actionCreate($event_id)
    {
        $model = new RegBattle(['event_id'=>$event_id]) //event_id получаем из get запроса
///другое...
}
....


Пробовал делать нечто подобное:
/**
     * Инициализация модели
     */
    public function init()
    {
        parent::init();

        if ($this->isNewRecord){
            $this->event_id = Registration::getEventId();
            $this->number = self::setNumber();
        }
    }


Но код выше инициализируется всегда когда подключают модель, а нужно только перед созданием записи, но не перед сохранением! То есть чтобы $this->number = self::setNumber(); ещё автоматически инициализировал в поле input значение с последним номером

/**
     * Добавить номер
     * @return mixed
     */
    public static function setNumber()
    {
        $event_id = Registration::getEventId();
        return self::find()->where(['event_id' => $event_id])->max('number') + 1;
    }
  • Вопрос задан
  • 88 просмотров
Пригласить эксперта
Ответы на вопрос 1
OKyJIucT
@OKyJIucT
Sunshine reggae
public function actionCreate($event_id = null)
{
	if($event_id) {
		$model = new RegBattle(['event_id'=>$event_id]) //event_id получаем из get запроса
	} else {
		// ... другое
	}
        

}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы