Я хочу сделать простые вещи: используя контроллер (метод create), чтобы всплывающее окно получало форму другого контроллера.и поместите его во всплывающее окно, чтобы сделать запрос AJAX.
Например, в моих плагинах у меня есть контроллер Customers и контроллер Invoices, я перечисляю свои элементы, создаю и обновляю их.Но я хочу создать клиента из представления «Счет-фактура», если пользователь не существует, я хочу вызвать форму «Создание клиента» во всплывающем окне, поэтому в моем контроллере «Счет-фактура» я поместил этот код:
public function OnLoadContent()
{
$config = $this->makeConfig('$/prestasafe/erp/models/customer/fields.yaml');
$config->model = new Customer;
$config->recordUrl = 'prestasafe/erp/customers/create/';
$widget = $this->makeWidget('Backend\Widgets\Form', $config);
$widget->bindToController();
$this->vars['widget'] = $widget;
return $this->makePartial('$/prestasafe/erp/models/customer/_add_customer_form.htm');
}
Я вызываю всплывающее окно с этой кнопкой:
<a data-control="popup" data-handler="onLoadContent" href="javascript:;" class="btn btn-primary btn-lg"> Launch Ajax Form </a>
Работает нормально.Это мое всплывающее окно:
<?= Form::open(); ?>
<?= $widget->render() ?>
<!-- <button type="submit" class="btn btn-primary">
Add user
</button> -->
<button data-request="onAddUser" class="btn btn-primary">
Add user
</button>
<?= Form::close() ?>
Но теперь я хочу вызвать действие создания CustomersController, поэтому я попробовал это:
public function onAddUser()
{
$ct = new CtrlCustomer;
$ct->asExtension('FormController')->create_onSave('create');
}
Кажется, это работает,но это создает пустой клиент.Поэтому я пытаюсь это:
public function onAddUser()
{
$data = collect(post());
$data->forget('_session_key');
$data->forget('_token');
\trace_log($data->toArray());
$c = Customer::create($data->toArray());
\trace_log($c);
\Flash::success('Success!!!');
}
Та же проблема.У кого-нибудь есть идея?
Спасибо