Подскажите, пожалуйста, как правильно сделать.
Есть форма подачи объявления. Выводится в модальном окне. Кнопка вызова модального окна с формой для нового объявления расположена в layouts/main.php. Кнопка для вызова окна с формой для редактирования находится в другом модальном окне.
Необходимо сделать возможность выводить форму не только для подачи нового объявления, но и редактирования.
Вообще-то это переделка существующего кода. Но старый код, я думаю, не очень, мягко говоря.
Сейчас, чтобы получить модель для редактирования, отсылается ajax запрос к контролеру, в ответе приходят данные, которые при помощи jquery парсятся и подставляются в форму. Но форма очень объёмная, очень много лишнего кода получается.
Задумал перенести всё это в виджет, чтобы прямо в виджете выводить или пустой экземпляр модели или заполненный, для редактирования, тем самым сократив объём кода и убрать лишние запросы к контролерам.
С первой частью я справился без проблем)))
Создал виджет подключил вид с формой.
Код: Выделить всё
class SaleForm extends Widget
{
public $model;
public $files;
public function init()
{
$this->model = new Cars;
$this->files = new Images;
}
public function run()
{
return $this->render('index', ['model' => $this->model, 'files' => $this->files]);
}
}
Хотелось бы получить что-то похожее.
Код: Выделить всё
public function init()
{
if($this->id == null){
$this->model = new Cars;
$this->files = new Images;
}
else{
// тут получать экземпляр необходимой модели
}
}
Код: Выделить всё
<?= SaleForm::widget(['id' => $id])
Но вот как теперь этот параметр передать в виджет не понимаю, не знаю.
Подскажите, как правильно сделать?