Неверный аргумент для gantt.parse или gantt.load (laravel и vuejs) - PullRequest
0 голосов
/ 24 марта 2020

Я пытаюсь построить диаграмму Ганта с использованием библиотеки Dhtmlx в моем проекте, поэтому я пытаюсь передать идентификатор проекта в функцию gantt.load, чтобы показать только Гант этого проекта. Но это покажет мне эти ошибки "Неверный аргумент для gantt.parse или gantt.load. Ожидается объект или строка JSON формата https://docs.dhtmlx.com/gantt/desktop__supported_data_formats.html#json. Фактическое значение аргумента: «не удалось» «любая помощь, ребята ??? это мой Гант. vue:

 <template>
<div class="container">
    <div class="row justify-content-center">
        <div class="col-md-8">
            <div class="card">
               <div class="card-body">

                <div id="gantt_here">

                 </div>

                </div>

         </div>
        </div>
    </div>
</div>

 </template>

<script>

export default {

    data(){
        return{
               key: this.$route.params.id,


        }
    },
    created(){

gantt.config.xml_date = "%Y-%m-%d %H:%i:%s";
gantt.config.order_branch = true;/*!*/
gantt.config.order_branch_free = true;/*!*/
gantt.init("gantt_here");

gantt.load("/api/data/"+this.key);

var dp = new gantt.dataProcessor("/api");/*!*/
dp.init(gantt);/*!*/
dp.setTransactionMode("REST");/*!*/

    },
    mounted() {

            console.log('Component mounted.')
    }
}

, и это мой ГантКонтроллер:

<?php
namespace App\Http\Controllers\API;
use App\Http\Controllers\Controller;
use App\Task;
use App\Link;

  class GanttController extends Controller
   {
public function get($id){
    $tasks= new Task;
 if($tasks->projet_id== $id){
    $tasks = new Task();
    $links = new Link();

    return response()->json([
        "data" => $tasks->orderBy('sortorder')->get(),
        "links" => $links->all()
    ]);
 }
 else{
  return response()->json([
    "failed"
            ]);
 }
 }

}

, и это мой маршрут в API. php : Route::get('/data/{id}', 'API\GanttController@get');

1 Ответ

0 голосов
/ 30 марта 2020

Гант ожидает данные в формате JSON. Но метод gantt.load() отдельно не отправляет аргументы на стороне сервера. Вы можете попробовать использовать пользовательскую маршрутизацию, но вам нужно вручную реализовать функцию для отправки данных на серверную часть, а затем добавить ее в действия * "create", "update" и "delete": https://docs.dhtmlx.com/gantt/desktop__server_side.html#customrouting

Или вы можете попробовать получить идентификатор в контроллере, например:

public function get($id){
    // $id: "/api/data/34"
    $id = substr($id, 10); // $id: "34"
    $tasks= new Task;
    if($tasks->projet_id== $id){ // $id: "34"
...