1) Вам не нужно напрямую вызывать метод рендеринга JSONOptionsConnector. Вызов его завершает обработку запроса, если я не ошибаюсь, поэтому SchedulerConnector не действует
Попробуйте закомментировать $list->render();
строку.
2) Формат ответа немного не в порядке. Это может быть ошибка в PHPYii-оболочке коннектора dhtmlx, я не уверен
Согласно исходным кодам клиентской стороне требуются свойства value
и label
из опций, а обработчик возвращает id
и name
.
Вы можете попробовать что-то следующее:
public function actionData() {
$list = new JSONOptionsConnector(null, "PHPYii");
$list->enable_log("text1.log");
$list->configure(
new Subsubproject(),
"id","id(value), name(label)"
// or
// "id(value)","id(value), name(label)"
);
$connector->enable_log("text2.log");
$connector->set_options("subsubprojects", $list);
$connector->configure(
new Booking(),
"id", "start, end, activity, user, subsubproject, status,comment"
);
$connector->render();
}
Это должно привести к ответу json, содержащему список заказов и подпроектов.
Тем не менее, я не могу проверить этот код, поэтому что-то все равно может быть не так.
Вы можете попробовать и посмотреть, выглядит ли результат JSON правильным.
Если это не приблизит вас, я, честно говоря, подготовил бы json вручную, а не использовал бы соединитель с оболочкой PHPYii
. Таким образом, вы будете иметь прямой контроль над тем, что возвращается с вашего контроллера, и у вас не будет другого черного ящика там.
Вам нужно будет вернуть json следующей структуры из вашего действия:
https://docs.dhtmlx.com/scheduler/data_formats.html#jsonwithcollections
так что в вашем действии будет что-то подобное:
return $this->asJson([
"data"=> $preparedEventsArray
"collections" => [
"subprojects"=> $preparedSubprojects
]
]);
где $ prepareEventsArray - массив объектов событий, как показано в документах, а $ subprojects - ваши объекты значения / метки
Обратите внимание, что имена свойств в коллекции data
- "id", "start_date", "end_date", "text" - являются обязательными, вам придется сопоставить вашу модель данных с этой структурой,
например,
start -> start_date
end -> end_date
activity -> text
все остальные свойства могут иметь имена без изменений.
К сожалению, в официальных документах нет примера кода для Yii2.
Есть общие документы для форматов сервера
https://docs.dhtmlx.com/scheduler/server_integration.html
И учебники по PHP Slim framework и Laravel , что не совсем то, что вам нужно, но самая близкая вещь в текущей документации.