Octobercms, как использовать ajax-запрос другого контроллера во всплывающем окне - PullRequest
0 голосов
/ 16 мая 2019

Я хочу сделать простые вещи: используя контроллер (метод 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!!!');
    } 

Та же проблема.У кого-нибудь есть идея?

Спасибо

...