Coder Social home page Coder Social logo

rebolon / php-sf-flex-webpack-encore-vuejs Goto Github PK

View Code? Open in Web Editor NEW
114.0 10.0 31.0 13.57 MB

A simple app skeleton to try to make every components work together : symfony 5.* (latest stable at the date, but work with sf 4 and 3.3+ if you pull the right tag), symfony/flex, webpack-encore, vuejs 2.5.x, boostrap 4 sass

Home Page: https://www.richard.icu/

License: MIT License

CSS 0.09% JavaScript 11.21% Vue 9.36% PHP 52.59% HTML 2.95% TypeScript 19.95% SCSS 0.31% Twig 3.55%
symfony webpack vuejs single-page-app sass bootstrap javascript testcafe reactjs quasar

php-sf-flex-webpack-encore-vuejs's People

Contributors

fossabot avatar marwahaha avatar rebolon avatar scrutinizer-auto-fixer avatar snyk-bot avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

php-sf-flex-webpack-encore-vuejs's Issues

encore dev works only if angular/cli 1.7.4 is installed

Working on feature/move-on-angular6 i wanted to remove root installation of angular/cli, coz it's useless.
But in fact i saw that without this devDeps, the command encore dev (or production) failed with this messages:

Running webpack ...

 ERROR  Failed to compile with 8 errors                                                                                                                                                               17:11:14

This dependency was not found:

* quasar-framework/dist/umd/quasar.mat.css in ./assets/js/quasar/app.js, ./assets/js/form-quasar-vuejs/app.js and 1 other

To install it, you can run: npm install --save quasar-framework/dist/umd/quasar.mat.css


These relative modules were not found:

* ./assets/css/app.scss in multi ./assets/js/app.js ./assets/css/app.scss
* ./index.css in ./assets/js/api-platform-admin-react/index.js
* ./material-icons/material-icons.css in ./node_modules/quasar-extras/material-icons.js
* ./roboto-font/roboto-font.css in ./node_modules/quasar-extras/roboto-font.js
* ./fontawesome/fontawesome.css in ./node_modules/quasar-extras/fontawesome.js

The first error can be dropped using quasar-framework/dist/quasar.mat.styl instead of umd version.
But i don't understand the next 5 errors. I checked, and i can say that relatives modules not found really exists. So what ?

isLoggedIn always ask for a csrf token

It should not require it
Symfony security should retreive the user using the session_id and let the user go to the controller.

For instance the TokenAuthenticator take the request and reject it because it doesn't find the csrf parameter token. The behavior is falsy

Custom Search: OR clause

With Api Platform, how could i manage an OR clause ?
I want to search Author on firstname or lastname, how may i do this ?
Should i use a DB View, map an entity on it (which would extends the Author entity) and add an extra virtual field name which concat both firts and last ?

Angular (and other JS app)

When i restore an object from cache, only the root Object is a real entity. If some props are related to other Entities, they will just be JSON object, not real instance of an Entity.
ex.

const jsonBook = {
  "title": "Harry Potter 1", 
  "serie": {
    "name": "Harry Potter"
  }
}

when i do a Book.initializeFromJson(Book, jsonBook), i will get a Book instance with all its own methods an props, but it's serie property won't be a Serie instance, just a javascript object.

It lacks JWT login system

Need to add the route inside the DefaultController

  • explain in the readme how to login, and how to get a new valid token

Add usage of CSRF token

Create a form with vuejs and a POST route in SF
Use CSRF token : store it in JS or in HTML header, and find a way to send it with every request to the server (not with request to external app like heroku)

EasyAdmin: Form Book fail because Catchable Fatal Error: Object of class App\Entity\Library\ProjectBookCreation could not be converted to string

uri to reproduce this :
http://localhost/admin/?action=new&entity=Book&menuIndex=0&submenuIndex=-1&sortField=id&sortDirection=DESC&page=33&referer=%252Fadmin%252F%253Faction%253Dlist%2526entity%253DBook%2526menuIndex%253D0%2526submenuIndex%253D-1%2526sortField%253Did%2526sortDirection%253DDESC%2526page%253D33

In fact a book is linked to editor and author using tables projectBookEdition and projectBookCreation. EasyAdmin try to allow the user to select items from thos 2 tables using selectBox. But it cannot, and in fact i dislike this because it would be better to add Author and Editor adding specific fields required by the associative tables.

JS app and CSRF: Guard may not be the best solution

I wrote the CSRFTokenAuthenticator just to add a csrf token check on all non GET route

But the guard also does the authentication whereas by default it's allready done by Json login security.

So in fact i need an event called only when on firewall security_json and on non GET call.
This event would only check token validity and would not take care the fact that it's on login route or not.

How to do this ?

TokenAuthentificator: check its behavior

It must authenticate a user based on a query.
If there is credentials it must check it
If there is no credentials it must not check them

  • maybe it may only support the login_json route

  • then check that other routes are running

  • or it may check all routes except GET

  • on login route it must check credentials

  • on other route it must only check validity of CSRF token

  • This 2nd option is to automate csrf check on POST/PUT/PATCH/DELETE query, because developper doesn't always use csrf

I also need to change the name: CSRFTokenAuthentificator

React admin fails to load

go to /demo/api-platform-admin-react
open the console

invariant.js:42 Uncaught Error: Element ref was specified as a string (listItem) but no owner was set. You may have multiple copies of React loaded. (details: https://fb.me/react-refs-must-have-owner).

my Hydra config is wrong and lead to an error : try to get list of author with /api/authors

Hydra error :

{
  "@context": "/api/contexts/Error",
  "@type": "hydra:Error",
  "hydra:title": "An error occurred",
  "hydra:description": "A circular reference has been detected when serializing the object of class \"App\\Entity\\Library\\ProjectBookCreation\" (configured limit: 1)",
  "trace": [
    {
      "namespace": "",
      "short_class": "",
      "class": "",
      "type": "",
      "function": "",
      "file": "D:\\dev\\php\\projects\\php-sf-flex-webpack-encore-vuejs\\vendor\\symfony\\serializer\\Normalizer\\AbstractNormalizer.php",
      "line": 195,
      "args": []
    },
    {
      "namespace": "Symfony\\Component\\Serializer\\Normalizer",
      "short_class": "AbstractNormalizer",
      "class": "Symfony\\Component\\Serializer\\Normalizer\\AbstractNormalizer",
      "type": "->",
      "function": "handleCircularReference",
      "file": "D:\\dev\\php\\projects\\php-sf-flex-webpack-encore-vuejs\\vendor\\symfony\\serializer\\Normalizer\\AbstractObjectNormalizer.php",
      "line": 66,
      "args": [
        [
          "object",
          "App\\Entity\\Library\\ProjectBookCreation"
        ]
      ]
    },
    {
      "namespace": "Symfony\\Component\\Serializer\\Normalizer",
      "short_class": "AbstractObjectNormalizer",
      "class": "Symfony\\Component\\Serializer\\Normalizer\\AbstractObjectNormalizer",
      "type": "->",
      "function": "normalize",
      "file": "D:\\dev\\php\\projects\\php-sf-flex-webpack-encore-vuejs\\vendor\\symfony\\serializer\\Serializer.php",
      "line": 133,
      "args": [
        [
          "object",
          "App\\Entity\\Library\\ProjectBookCreation"
        ],
        [
          "string",
          "jsonld"
        ],
        [
          "array",
          {
            "collection_operation_name": [
              "string",
              "get"
            ],
            "operation_type": [
              "string",
              "collection"
            ],
            "request_uri": [
              "string",
              "/api/authors"
            ],
            "uri": [
              "string",
              "http://localhost/api/authors"
            ],
            "resources": [
              "object",
              "class@anonymous\u0000D:\\dev\\php\\projects\\php-sf-flex-webpack-encore-vuejs\\vendor\\api-platform\\core\\src\\EventListener\\SerializeListener.php0000022DE7FC07D9"
            ],
            "jsonld_has_context": [
              "boolean",
              true
            ],
            "api_sub_level": [
              "boolean",
              true
            ],
            "iri": [
              "string",
              "/api/books/1"
            ],
            "api_normalize": [
              "boolean",
              true
            ],
            "cache_key": [
              "boolean",
              false
            ],
            "circular_reference_limit": [
              "array",
              {
                "00000000396b5a3f0000000043f65eba": [
                  "integer",
                  1
                ],
                "00000000396b5b970000000043f65eba": [
                  "integer",
                  1
                ]
              }
            ]
          }
        ]
      ]
    },
    {
      "namespace": "Symfony\\Component\\Serializer",
      "short_class": "Serializer",
      "class": "Symfony\\Component\\Serializer\\Serializer",
      "type": "->",
      "function": "normalize",
      "file": "D:\\dev\\php\\projects\\php-sf-flex-webpack-encore-vuejs\\vendor\\api-platform\\core\\src\\Hydra\\Serializer\\CollectionNormalizer.php",
      "line": 69,
      "args": [
        [
          "object",
          "App\\Entity\\Library\\ProjectBookCreation"
        ],
        [
          "string",
          "jsonld"
        ],
        [
          "array",
          {
            "collection_operation_name": [
              "string",
              "get"
            ],
            "operation_type": [
              "string",
              "collection"
            ],
            "request_uri": [
              "string",
              "/api/authors"
            ],
            "uri": [
              "string",
              "http://localhost/api/authors"
            ],
            "resources": [
              "object",
              "class@anonymous\u0000D:\\dev\\php\\projects\\php-sf-flex-webpack-encore-vuejs\\vendor\\api-platform\\core\\src\\EventListener\\SerializeListener.php0000022DE7FC07D9"
            ],
            "jsonld_has_context": [
              "boolean",
              true
            ],
            "api_sub_level": [
              "boolean",
              true
            ],
            "iri": [
              "string",
              "/api/books/1"
            ],
            "api_normalize": [
              "boolean",
              true
            ],
            "cache_key": [
              "boolean",
              false
            ],
            "circular_reference_limit": [
              "array",
              {
                "00000000396b5a3f0000000043f65eba": [
                  "integer",
                  1
                ],
                "00000000396b5b880000000043f65eba": [
                  "integer",
                  1
                ],
                "00000000396b5b970000000043f65eba": [
                  "integer",
                  1
                ]
              }
            ]
          }
        ]
      ]
    },
    {
      "namespace": "ApiPlatform\\Core\\Hydra\\Serializer",
      "short_class": "CollectionNormalizer",
      "class": "ApiPlatform\\Core\\Hydra\\Serializer\\CollectionNormalizer",
      "type": "->",
      "function": "normalize",
      "file": "D:\\dev\\php\\projects\\php-sf-flex-webpack-encore-vuejs\\vendor\\api-platform\\core\\src\\Hydra\\Serializer\\PartialCollectionViewNormalizer.php",
      "line": 49,
      "args": [
        [
          "object",
          "Doctrine\\ORM\\PersistentCollection"
        ],
        [
          "string",
          "jsonld"
        ],
        [
          "array",
          {
            "collection_operation_name": [
              "string",
              "get"
            ],
            "operation_type": [
              "string",
              "collection"
            ],
            "request_uri": [
              "string",
              "/api/authors"
            ],
            "uri": [
              "string",
              "http://localhost/api/authors"
            ],
            "resources": [
              "object",
              "class@anonymous\u0000D:\\dev\\php\\projects\\php-sf-flex-webpack-encore-vuejs\\vendor\\api-platform\\core\\src\\EventListener\\SerializeListener.php0000022DE7FC07D9"
            ],
            "jsonld_has_context": [
              "boolean",
              true
            ],
            "api_sub_level": [
              "boolean",
              true
            ],
            "iri": [
              "string",
              "/api/books/1"
            ],
            "api_normalize": [
              "boolean",
              true
            ],
            "cache_key": [
              "boolean",
              false
            ],
            "circular_reference_limit": [
              "array",
              {
                "00000000396b5a3f0000000043f65eba": [
                  "integer",
                  1
                ],
                "00000000396b5b880000000043f65eba": [
                  "integer",
                  1
                ],
                "00000000396b5b970000000043f65eba": [
                  "integer",
                  1
                ]
              }
            ]
          }
        ]
      ]
    },
    {
      "namespace": "ApiPlatform\\Core\\Hydra\\Serializer",
      "short_class": "PartialCollectionViewNormalizer",
      "class": "ApiPlatform\\Core\\Hydra\\Serializer\\PartialCollectionViewNormalizer",
      "type": "->",
      "function": "normalize",
      "file": "D:\\dev\\php\\projects\\php-sf-flex-webpack-encore-vuejs\\vendor\\api-platform\\core\\src\\Hydra\\Serializer\\CollectionFiltersNormalizer.php",
      "line": 65,
      "args": [
        [
          "object",
          "Doctrine\\ORM\\PersistentCollection"
        ],
        [
          "string",
          "jsonld"
        ],
        [
          "array",
          {
            "collection_operation_name": [
              "string",
              "get"
            ],
            "operation_type": [
              "string",
              "collection"
            ],
            "request_uri": [
              "string",
              "/api/authors"
            ],
            "uri": [
              "string",
              "http://localhost/api/authors"
            ],
            "resources": [
              "object",
              "class@anonymous\u0000D:\\dev\\php\\projects\\php-sf-flex-webpack-encore-vuejs\\vendor\\api-platform\\core\\src\\EventListener\\SerializeListener.php0000022DE7FC07D9"
            ],
            "jsonld_has_context": [
              "boolean",
              true
            ],
            "api_sub_level": [
              "boolean",
              true
            ],
            "iri": [
              "string",
              "/api/books/1"
            ],
            "api_normalize": [
              "boolean",
              true
            ],
            "cache_key": [
              "boolean",
              false
            ],
            "circular_reference_limit": [
              "array",
              {
                "00000000396b5a3f0000000043f65eba": [
                  "integer",
                  1
                ],
                "00000000396b5b880000000043f65eba": [
                  "integer",
                  1
                ],
                "00000000396b5b970000000043f65eba": [
                  "integer",
                  1
                ]
              }
            ]
          }
        ]
      ]
    },
    {
      "namespace": "ApiPlatform\\Core\\Hydra\\Serializer",
      "short_class": "CollectionFiltersNormalizer",
      "class": "ApiPlatform\\Core\\Hydra\\Serializer\\CollectionFiltersNormalizer",
      "type": "->",
      "function": "normalize",
      "file": "D:\\dev\\php\\projects\\php-sf-flex-webpack-encore-vuejs\\vendor\\symfony\\serializer\\Serializer.php",
      "line": 133,
      "args": [
        [
          "object",
          "Doctrine\\ORM\\PersistentCollection"
        ],
        [
          "string",
          "jsonld"
        ],
        [
          "array",
          {
            "collection_operation_name": [
              "string",
              "get"
            ],
            "operation_type": [
              "string",
              "collection"
            ],
            "request_uri": [
              "string",
              "/api/authors"
            ],
            "uri": [
              "string",
              "http://localhost/api/authors"
            ],
            "resources": [
              "object",
              "class@anonymous\u0000D:\\dev\\php\\projects\\php-sf-flex-webpack-encore-vuejs\\vendor\\api-platform\\core\\src\\EventListener\\SerializeListener.php0000022DE7FC07D9"
            ],
            "jsonld_has_context": [
              "boolean",
              true
            ],
            "api_sub_level": [
              "boolean",
              true
            ],
            "iri": [
              "string",
              "/api/books/1"
            ],
            "api_normalize": [
              "boolean",
              true
            ],
            "cache_key": [
              "boolean",
              false
            ],
            "circular_reference_limit": [
              "array",
              {
                "00000000396b5a3f0000000043f65eba": [
                  "integer",
                  1
                ],
                "00000000396b5b880000000043f65eba": [
                  "integer",
                  1
                ],
                "00000000396b5b970000000043f65eba": [
                  "integer",
                  1
                ]
              }
            ]
          }
        ]
      ]
    },
    {
      "namespace": "Symfony\\Component\\Serializer",
      "short_class": "Serializer",
      "class": "Symfony\\Component\\Serializer\\Serializer",
      "type": "->",
      "function": "normalize",
      "file": "D:\\dev\\php\\projects\\php-sf-flex-webpack-encore-vuejs\\vendor\\api-platform\\core\\src\\Serializer\\AbstractItemNormalizer.php",
      "line": 445,
      "args": [
        [
          "object",
          "Doctrine\\ORM\\PersistentCollection"
        ],
        [
          "string",
          "jsonld"
        ],
        [
          "array",
          {
            "collection_operation_name": [
              "string",
              "get"
            ],
            "operation_type": [
              "string",
              "collection"
            ],
            "request_uri": [
              "string",
              "/api/authors"
            ],
            "uri": [
              "string",
              "http://localhost/api/authors"
            ],
            "resources": [
              "object",
              "class@anonymous\u0000D:\\dev\\php\\projects\\php-sf-flex-webpack-encore-vuejs\\vendor\\api-platform\\core\\src\\EventListener\\SerializeListener.php0000022DE7FC07D9"
            ],
            "jsonld_has_context": [
              "boolean",
              true
            ],
            "api_sub_level": [
              "boolean",
              true
            ],
            "iri": [
              "string",
              "/api/books/1"
            ],
            "api_normalize": [
              "boolean",
              true
            ],
            "cache_key": [
              "boolean",
              false
            ],
            "circular_reference_limit": [
              "array",
              {
                "00000000396b5a3f0000000043f65eba": [
                  "integer",
                  1
                ],
                "00000000396b5b880000000043f65eba": [
                  "integer",
                  1
                ],
                "00000000396b5b970000000043f65eba": [
                  "integer",
                  1
                ]
              }
            ]
          }
        ]
      ]
    },
    {
      "namespace": "ApiPlatform\\Core\\Serializer",
      "short_class": "AbstractItemNormalizer",
      "class": "ApiPlatform\\Core\\Serializer\\AbstractItemNormalizer",
      "type": "->",
      "function": "getAttributeValue",
      "file": "D:\\dev\\php\\projects\\php-sf-flex-webpack-encore-vuejs\\vendor\\symfony\\serializer\\Normalizer\\AbstractObjectNormalizer.php",
      "line": 80,
      "args": [
        [
          "object",
          "App\\Entity\\Library\\Book"
        ],
        [
          "string",
          "projectBookCreation"
        ],
        [
          "string",
          "jsonld"
        ],
        [
          "array",
          {
            "collection_operation_name": [
              "string",
              "get"
            ],
            "operation_type": [
              "string",
              "collection"
            ],
            "request_uri": [
              "string",
              "/api/authors"
            ],
            "uri": [
              "string",
              "http://localhost/api/authors"
            ],
            "resources": [
              "object",
              "class@anonymous\u0000D:\\dev\\php\\projects\\php-sf-flex-webpack-encore-vuejs\\vendor\\api-platform\\core\\src\\EventListener\\SerializeListener.php0000022DE7FC07D9"
            ],
            "jsonld_has_context": [
              "boolean",
              true
            ],
            "api_sub_level": [
              "boolean",
              true
            ],
            "iri": [
              "string",
              "/api/books/1"
            ],
            "api_normalize": [
              "boolean",
              true
            ],
            "cache_key": [
              "boolean",
              false
            ],
            "circular_reference_limit": [
              "array",
              {
                "00000000396b5a3f0000000043f65eba": [
                  "integer",
                  1
                ],
                "00000000396b5b880000000043f65eba": [
                  "integer",
                  1
                ],
                "00000000396b5b970000000043f65eba": [
                  "integer",
                  1
                ]
              }
            ]
          }
        ]
      ]
    },
    {
      "namespace": "Symfony\\Component\\Serializer\\Normalizer",
      "short_class": "AbstractObjectNormalizer",
      "class": "Symfony\\Component\\Serializer\\Normalizer\\AbstractObjectNormalizer",
      "type": "->",
      "function": "normalize",
      "file": "D:\\dev\\php\\projects\\php-sf-flex-webpack-encore-vuejs\\vendor\\api-platform\\core\\src\\Serializer\\AbstractItemNormalizer.php",
      "line": 100,
      "args": [
        [
          "object",
          "App\\Entity\\Library\\Book"
        ],
        [
          "string",
          "jsonld"
        ],
        [
          "array",
          {
            "collection_operation_name": [
              "string",
              "get"
            ],
            "operation_type": [
              "string",
              "collection"
            ],
            "request_uri": [
              "string",
              "/api/authors"
            ],
            "uri": [
              "string",
              "http://localhost/api/authors"
            ],
            "resources": [
              "object",
              "class@anonymous\u0000D:\\dev\\php\\projects\\php-sf-flex-webpack-encore-vuejs\\vendor\\api-platform\\core\\src\\EventListener\\SerializeListener.php0000022DE7FC07D9"
            ],
            "jsonld_has_context": [
              "boolean",
              true
            ],
            "api_sub_level": [
              "boolean",
              true
            ],
            "iri": [
              "string",
              "/api/books/1"
            ],
            "api_normalize": [
              "boolean",
              true
            ],
            "cache_key": [
              "boolean",
              false
            ],
            "circular_reference_limit": [
              "array",
              {
                "00000000396b5a3f0000000043f65eba": [
                  "integer",
                  1
                ],
                "00000000396b5b880000000043f65eba": [
                  "integer",
                  1
                ],
                "00000000396b5b970000000043f65eba": [
                  "integer",
                  1
                ]
              }
            ],
            "resource_class": [
              "string",
              "App\\Entity\\Library\\Book"
            ]
          }
        ]
      ]
    },
    {
      "namespace": "ApiPlatform\\Core\\Serializer",
      "short_class": "AbstractItemNormalizer",
      "class": "ApiPlatform\\Core\\Serializer\\AbstractItemNormalizer",
      "type": "->",
      "function": "normalize",
      "file": "D:\\dev\\php\\projects\\php-sf-flex-webpack-encore-vuejs\\vendor\\api-platform\\core\\src\\JsonLd\\Serializer\\ItemNormalizer.php",
      "line": 73,
      "args": [
        [
          "object",
          "App\\Entity\\Library\\Book"
        ],
        [
          "string",
          "jsonld"
        ],
        [
          "array",
          {
            "collection_operation_name": [
              "string",
              "get"
            ],
            "operation_type": [
              "string",
              "collection"
            ],
            "request_uri": [
              "string",
              "/api/authors"
            ],
            "uri": [
              "string",
              "http://localhost/api/authors"
            ],
            "resources": [
              "object",
              "class@anonymous\u0000D:\\dev\\php\\projects\\php-sf-flex-webpack-encore-vuejs\\vendor\\api-platform\\core\\src\\EventListener\\SerializeListener.php0000022DE7FC07D9"
            ],
            "jsonld_has_context": [
              "boolean",
              true
            ],
            "api_sub_level": [
              "boolean",
              true
            ],
            "iri": [
              "string",
              "/api/books/1"
            ],
            "api_normalize": [
              "boolean",
              true
            ],
            "cache_key": [
              "boolean",
              false
            ],
            "circular_reference_limit": [
              "array",
              {
                "00000000396b5a3f0000000043f65eba": [
                  "integer",
                  1
                ],
                "00000000396b5b880000000043f65eba": [
                  "integer",
                  1
                ]
              }
            ],
            "resource_class": [
              "string",
              "App\\Entity\\Library\\Book"
            ]
          }
        ]
      ]
    },
    {
      "namespace": "ApiPlatform\\Core\\JsonLd\\Serializer",
      "short_class": "ItemNormalizer",
      "class": "ApiPlatform\\Core\\JsonLd\\Serializer\\ItemNormalizer",
      "type": "->",
      "function": "normalize",
      "file": "D:\\dev\\php\\projects\\php-sf-flex-webpack-encore-vuejs\\vendor\\symfony\\serializer\\Serializer.php",
      "line": 133,
      "args": [
        [
          "object",
          "App\\Entity\\Library\\Book"
        ],
        [
          "string",
          "jsonld"
        ],
        [
          "array",
          {
            "collection_operation_name": [
              "string",
              "get"
            ],
            "operation_type": [
              "string",
              "collection"
            ],
            "request_uri": [
              "string",
              "/api/authors"
            ],
            "uri": [
              "string",
              "http://localhost/api/authors"
            ],
            "resources": [
              "object",
              "class@anonymous\u0000D:\\dev\\php\\projects\\php-sf-flex-webpack-encore-vuejs\\vendor\\api-platform\\core\\src\\EventListener\\SerializeListener.php0000022DE7FC07D9"
            ],
            "jsonld_has_context": [
              "boolean",
              true
            ],
            "api_sub_level": [
              "boolean",
              true
            ],
            "iri": [
              "string",
              "/api/books/1"
            ],
            "api_normalize": [
              "boolean",
              true
            ],
            "cache_key": [
              "boolean",
              false
            ],
            "circular_reference_limit": [
              "array",
              {
                "00000000396b5a3f0000000043f65eba": [
                  "integer",
                  1
                ],
                "00000000396b5b880000000043f65eba": [
                  "integer",
                  1
                ]
              }
            ],
            "resource_class": [
              "string",
              "App\\Entity\\Library\\Book"
            ]
          }
        ]
      ]
    },
    {
      "namespace": "Symfony\\Component\\Serializer",
      "short_class": "Serializer",
      "class": "Symfony\\Component\\Serializer\\Serializer",
      "type": "->",
      "function": "normalize",
      "file": "D:\\dev\\php\\projects\\php-sf-flex-webpack-encore-vuejs\\vendor\\symfony\\serializer\\Normalizer\\AbstractObjectNormalizer.php",
      "line": 98,
      "args": [
        [
          "object",
          "App\\Entity\\Library\\Book"
        ],
        [
          "string",
          "jsonld"
        ],
        [
          "array",
          {
            "collection_operation_name": [
              "string",
              "get"
            ],
            "operation_type": [
              "string",
              "collection"
            ],
            "request_uri": [
              "string",
              "/api/authors"
            ],
            "uri": [
              "string",
              "http://localhost/api/authors"
            ],
            "resources": [
              "object",
              "class@anonymous\u0000D:\\dev\\php\\projects\\php-sf-flex-webpack-encore-vuejs\\vendor\\api-platform\\core\\src\\EventListener\\SerializeListener.php0000022DE7FC07D9"
            ],
            "jsonld_has_context": [
              "boolean",
              true
            ],
            "api_sub_level": [
              "boolean",
              true
            ],
            "iri": [
              "string",
              "/api/authors/1"
            ],
            "api_normalize": [
              "boolean",
              true
            ],
            "cache_key": [
              "boolean",
              false
            ],
            "circular_reference_limit": [
              "array",
              {
                "00000000396b5a3f0000000043f65eba": [
                  "integer",
                  1
                ],
                "00000000396b5b880000000043f65eba": [
                  "integer",
                  1
                ]
              }
            ]
          }
        ]
      ]
    },
    {
      "namespace": "Symfony\\Component\\Serializer\\Normalizer",
      "short_class": "AbstractObjectNormalizer",
      "class": "Symfony\\Component\\Serializer\\Normalizer\\AbstractObjectNormalizer",
      "type": "->",
      "function": "normalize",
      "file": "D:\\dev\\php\\projects\\php-sf-flex-webpack-encore-vuejs\\vendor\\symfony\\serializer\\Serializer.php",
      "line": 133,
      "args": [
        [
          "object",
          "App\\Entity\\Library\\ProjectBookCreation"
        ],
        [
          "string",
          "jsonld"
        ],
        [
          "array",
          {
            "collection_operation_name": [
              "string",
              "get"
            ],
            "operation_type": [
              "string",
              "collection"
            ],
            "request_uri": [
              "string",
              "/api/authors"
            ],
            "uri": [
              "string",
              "http://localhost/api/authors"
            ],
            "resources": [
              "object",
              "class@anonymous\u0000D:\\dev\\php\\projects\\php-sf-flex-webpack-encore-vuejs\\vendor\\api-platform\\core\\src\\EventListener\\SerializeListener.php0000022DE7FC07D9"
            ],
            "jsonld_has_context": [
              "boolean",
              true
            ],
            "api_sub_level": [
              "boolean",
              true
            ],
            "iri": [
              "string",
              "/api/authors/1"
            ],
            "api_normalize": [
              "boolean",
              true
            ],
            "cache_key": [
              "boolean",
              false
            ],
            "circular_reference_limit": [
              "array",
              {
                "00000000396b5a3f0000000043f65eba": [
                  "integer",
                  1
                ],
                "00000000396b5b880000000043f65eba": [
                  "integer",
                  1
                ]
              }
            ]
          }
        ]
      ]
    },
    {
      "namespace": "Symfony\\Component\\Serializer",
      "short_class": "Serializer",
      "class": "Symfony\\Component\\Serializer\\Serializer",
      "type": "->",
      "function": "normalize",
      "file": "D:\\dev\\php\\projects\\php-sf-flex-webpack-encore-vuejs\\vendor\\api-platform\\core\\src\\Hydra\\Serializer\\CollectionNormalizer.php",
      "line": 69,
      "args": [
        [
          "object",
          "App\\Entity\\Library\\ProjectBookCreation"
        ],
        [
          "string",
          "jsonld"
        ],
        [
          "array",
          {
            "collection_operation_name": [
              "string",
              "get"
            ],
            "operation_type": [
              "string",
              "collection"
            ],
            "request_uri": [
              "string",
              "/api/authors"
            ],
            "uri": [
              "string",
              "http://localhost/api/authors"
            ],
            "resources": [
              "object",
              "class@anonymous\u0000D:\\dev\\php\\projects\\php-sf-flex-webpack-encore-vuejs\\vendor\\api-platform\\core\\src\\EventListener\\SerializeListener.php0000022DE7FC07D9"
            ],
            "jsonld_has_context": [
              "boolean",
              true
            ],
            "api_sub_level": [
              "boolean",
              true
            ],
            "iri": [
              "string",
              "/api/authors/1"
            ],
            "api_normalize": [
              "boolean",
              true
            ],
            "cache_key": [
              "boolean",
              false
            ],
            "circular_reference_limit": [
              "array",
              {
                "00000000396b5a3f0000000043f65eba": [
                  "integer",
                  1
                ]
              }
            ]
          }
        ]
      ]
    },
    {
      "namespace": "ApiPlatform\\Core\\Hydra\\Serializer",
      "short_class": "CollectionNormalizer",
      "class": "ApiPlatform\\Core\\Hydra\\Serializer\\CollectionNormalizer",
      "type": "->",
      "function": "normalize",
      "file": "D:\\dev\\php\\projects\\php-sf-flex-webpack-encore-vuejs\\vendor\\api-platform\\core\\src\\Hydra\\Serializer\\PartialCollectionViewNormalizer.php",
      "line": 49,
      "args": [
        [
          "object",
          "Doctrine\\ORM\\PersistentCollection"
        ],
        [
          "string",
          "jsonld"
        ],
        [
          "array",
          {
            "collection_operation_name": [
              "string",
              "get"
            ],
            "operation_type": [
              "string",
              "collection"
            ],
            "request_uri": [
              "string",
              "/api/authors"
            ],
            "uri": [
              "string",
              "http://localhost/api/authors"
            ],
            "resources": [
              "object",
              "class@anonymous\u0000D:\\dev\\php\\projects\\php-sf-flex-webpack-encore-vuejs\\vendor\\api-platform\\core\\src\\EventListener\\SerializeListener.php0000022DE7FC07D9"
            ],
            "jsonld_has_context": [
              "boolean",
              true
            ],
            "api_sub_level": [
              "boolean",
              true
            ],
            "iri": [
              "string",
              "/api/authors/1"
            ],
            "api_normalize": [
              "boolean",
              true
            ],
            "cache_key": [
              "boolean",
              false
            ],
            "circular_reference_limit": [
              "array",
              {
                "00000000396b5a3f0000000043f65eba": [
                  "integer",
                  1
                ]
              }
            ]
          }
        ]
      ]
    },
    {
      "namespace": "ApiPlatform\\Core\\Hydra\\Serializer",
      "short_class": "PartialCollectionViewNormalizer",
      "class": "ApiPlatform\\Core\\Hydra\\Serializer\\PartialCollectionViewNormalizer",
      "type": "->",
      "function": "normalize",
      "file": "D:\\dev\\php\\projects\\php-sf-flex-webpack-encore-vuejs\\vendor\\api-platform\\core\\src\\Hydra\\Serializer\\CollectionFiltersNormalizer.php",
      "line": 65,
      "args": [
        [
          "object",
          "Doctrine\\ORM\\PersistentCollection"
        ],
        [
          "string",
          "jsonld"
        ],
        [
          "array",
          {
            "collection_operation_name": [
              "string",
              "get"
            ],
            "operation_type": [
              "string",
              "collection"
            ],
            "request_uri": [
              "string",
              "/api/authors"
            ],
            "uri": [
              "string",
              "http://localhost/api/authors"
            ],
            "resources": [
              "object",
              "class@anonymous\u0000D:\\dev\\php\\projects\\php-sf-flex-webpack-encore-vuejs\\vendor\\api-platform\\core\\src\\EventListener\\SerializeListener.php0000022DE7FC07D9"
            ],
            "jsonld_has_context": [
              "boolean",
              true
            ],
            "api_sub_level": [
              "boolean",
              true
            ],
            "iri": [
              "string",
              "/api/authors/1"
            ],
            "api_normalize": [
              "boolean",
              true
            ],
            "cache_key": [
              "boolean",
              false
            ],
            "circular_reference_limit": [
              "array",
              {
                "00000000396b5a3f0000000043f65eba": [
                  "integer",
                  1
                ]
              }
            ]
          }
        ]
      ]
    },
    {
      "namespace": "ApiPlatform\\Core\\Hydra\\Serializer",
      "short_class": "CollectionFiltersNormalizer",
      "class": "ApiPlatform\\Core\\Hydra\\Serializer\\CollectionFiltersNormalizer",
      "type": "->",
      "function": "normalize",
      "file": "D:\\dev\\php\\projects\\php-sf-flex-webpack-encore-vuejs\\vendor\\symfony\\serializer\\Serializer.php",
      "line": 133,
      "args": [
        [
          "object",
          "Doctrine\\ORM\\PersistentCollection"
        ],
        [
          "string",
          "jsonld"
        ],
        [
          "array",
          {
            "collection_operation_name": [
              "string",
              "get"
            ],
            "operation_type": [
              "string",
              "collection"
            ],
            "request_uri": [
              "string",
              "/api/authors"
            ],
            "uri": [
              "string",
              "http://localhost/api/authors"
            ],
            "resources": [
              "object",
              "class@anonymous\u0000D:\\dev\\php\\projects\\php-sf-flex-webpack-encore-vuejs\\vendor\\api-platform\\core\\src\\EventListener\\SerializeListener.php0000022DE7FC07D9"
            ],
            "jsonld_has_context": [
              "boolean",
              true
            ],
            "api_sub_level": [
              "boolean",
              true
            ],
            "iri": [
              "string",
              "/api/authors/1"
            ],
            "api_normalize": [
              "boolean",
              true
            ],
            "cache_key": [
              "boolean",
              false
            ],
            "circular_reference_limit": [
              "array",
              {
                "00000000396b5a3f0000000043f65eba": [
                  "integer",
                  1
                ]
              }
            ]
          }
        ]
      ]
    },
    {
      "namespace": "Symfony\\Component\\Serializer",
      "short_class": "Serializer",
      "class": "Symfony\\Component\\Serializer\\Serializer",
      "type": "->",
      "function": "normalize",
      "file": "D:\\dev\\php\\projects\\php-sf-flex-webpack-encore-vuejs\\vendor\\api-platform\\core\\src\\Serializer\\AbstractItemNormalizer.php",
      "line": 445,
      "args": [
        [
          "object",
          "Doctrine\\ORM\\PersistentCollection"
        ],
        [
          "string",
          "jsonld"
        ],
        [
          "array",
          {
            "collection_operation_name": [
              "string",
              "get"
            ],
            "operation_type": [
              "string",
              "collection"
            ],
            "request_uri": [
              "string",
              "/api/authors"
            ],
            "uri": [
              "string",
              "http://localhost/api/authors"
            ],
            "resources": [
              "object",
              "class@anonymous\u0000D:\\dev\\php\\projects\\php-sf-flex-webpack-encore-vuejs\\vendor\\api-platform\\core\\src\\EventListener\\SerializeListener.php0000022DE7FC07D9"
            ],
            "jsonld_has_context": [
              "boolean",
              true
            ],
            "api_sub_level": [
              "boolean",
              true
            ],
            "iri": [
              "string",
              "/api/authors/1"
            ],
            "api_normalize": [
              "boolean",
              true
            ],
            "cache_key": [
              "boolean",
              false
            ],
            "circular_reference_limit": [
              "array",
              {
                "00000000396b5a3f0000000043f65eba": [
                  "integer",
                  1
                ]
              }
            ]
          }
        ]
      ]
    },
    {
      "namespace": "ApiPlatform\\Core\\Serializer",
      "short_class": "AbstractItemNormalizer",
      "class": "ApiPlatform\\Core\\Serializer\\AbstractItemNormalizer",
      "type": "->",
      "function": "getAttributeValue",
      "file": "D:\\dev\\php\\projects\\php-sf-flex-webpack-encore-vuejs\\vendor\\symfony\\serializer\\Normalizer\\AbstractObjectNormalizer.php",
      "line": 80,
      "args": [
        [
          "object",
          "App\\Entity\\Library\\Author"
        ],
        [
          "string",
          "books"
        ],
        [
          "string",
          "jsonld"
        ],
        [
          "array",
          {
            "collection_operation_name": [
              "string",
              "get"
            ],
            "operation_type": [
              "string",
              "collection"
            ],
            "request_uri": [
              "string",
              "/api/authors"
            ],
            "uri": [
              "string",
              "http://localhost/api/authors"
            ],
            "resources": [
              "object",
              "class@anonymous\u0000D:\\dev\\php\\projects\\php-sf-flex-webpack-encore-vuejs\\vendor\\api-platform\\core\\src\\EventListener\\SerializeListener.php0000022DE7FC07D9"
            ],
            "jsonld_has_context": [
              "boolean",
              true
            ],
            "api_sub_level": [
              "boolean",
              true
            ],
            "iri": [
              "string",
              "/api/authors/1"
            ],
            "api_normalize": [
              "boolean",
              true
            ],
            "cache_key": [
              "boolean",
              false
            ],
            "circular_reference_limit": [
              "array",
              {
                "00000000396b5a3f0000000043f65eba": [
                  "integer",
                  1
                ]
              }
            ]
          }
        ]
      ]
    },
    {
      "namespace": "Symfony\\Component\\Serializer\\Normalizer",
      "short_class": "AbstractObjectNormalizer",
      "class": "Symfony\\Component\\Serializer\\Normalizer\\AbstractObjectNormalizer",
      "type": "->",
      "function": "normalize",
      "file": "D:\\dev\\php\\projects\\php-sf-flex-webpack-encore-vuejs\\vendor\\api-platform\\core\\src\\Serializer\\AbstractItemNormalizer.php",
      "line": 100,
      "args": [
        [
          "object",
          "App\\Entity\\Library\\Author"
        ],
        [
          "string",
          "jsonld"
        ],
        [
          "array",
          {
            "collection_operation_name": [
              "string",
              "get"
            ],
            "operation_type": [
              "string",
              "collection"
            ],
            "resource_class": [
              "string",
              "App\\Entity\\Library\\Author"
            ],
            "request_uri": [
              "string",
              "/api/authors"
            ],
            "uri": [
              "string",
              "http://localhost/api/authors"
            ],
            "resources": [
              "object",
              "class@anonymous\u0000D:\\dev\\php\\projects\\php-sf-flex-webpack-encore-vuejs\\vendor\\api-platform\\core\\src\\EventListener\\SerializeListener.php0000022DE7FC07D9"
            ],
            "jsonld_has_context": [
              "boolean",
              true
            ],
            "api_sub_level": [
              "boolean",
              true
            ],
            "iri": [
              "string",
              "/api/authors/1"
            ],
            "api_normalize": [
              "boolean",
              true
            ],
            "cache_key": [
              "boolean",
              false
            ],
            "circular_reference_limit": [
              "array",
              {
                "00000000396b5a3f0000000043f65eba": [
                  "integer",
                  1
                ]
              }
            ]
          }
        ]
      ]
    },
    {
      "namespace": "ApiPlatform\\Core\\Serializer",
      "short_class": "AbstractItemNormalizer",
      "class": "ApiPlatform\\Core\\Serializer\\AbstractItemNormalizer",
      "type": "->",
      "function": "normalize",
      "file": "D:\\dev\\php\\projects\\php-sf-flex-webpack-encore-vuejs\\vendor\\api-platform\\core\\src\\JsonLd\\Serializer\\ItemNormalizer.php",
      "line": 73,
      "args": [
        [
          "object",
          "App\\Entity\\Library\\Author"
        ],
        [
          "string",
          "jsonld"
        ],
        [
          "array",
          {
            "collection_operation_name": [
              "string",
              "get"
            ],
            "operation_type": [
              "string",
              "collection"
            ],
            "resource_class": [
              "string",
              "App\\Entity\\Library\\Author"
            ],
            "request_uri": [
              "string",
              "/api/authors"
            ],
            "uri": [
              "string",
              "http://localhost/api/authors"
            ],
            "resources": [
              "object",
              "class@anonymous\u0000D:\\dev\\php\\projects\\php-sf-flex-webpack-encore-vuejs\\vendor\\api-platform\\core\\src\\EventListener\\SerializeListener.php0000022DE7FC07D9"
            ],
            "jsonld_has_context": [
              "boolean",
              true
            ],
            "api_sub_level": [
              "boolean",
              true
            ],
            "iri": [
              "string",
              "/api/authors/1"
            ],
            "api_normalize": [
              "boolean",
              true
            ]
          }
        ]
      ]
    },
    {
      "namespace": "ApiPlatform\\Core\\JsonLd\\Serializer",
      "short_class": "ItemNormalizer",
      "class": "ApiPlatform\\Core\\JsonLd\\Serializer\\ItemNormalizer",
      "type": "->",
      "function": "normalize",
      "file": "D:\\dev\\php\\projects\\php-sf-flex-webpack-encore-vuejs\\vendor\\symfony\\serializer\\Serializer.php",
      "line": 133,
      "args": [
        [
          "object",
          "App\\Entity\\Library\\Author"
        ],
        [
          "string",
          "jsonld"
        ],
        [
          "array",
          {
            "collection_operation_name": [
              "string",
              "get"
            ],
            "operation_type": [
              "string",
              "collection"
            ],
            "resource_class": [
              "string",
              "App\\Entity\\Library\\Author"
            ],
            "request_uri": [
              "string",
              "/api/authors"
            ],
            "uri": [
              "string",
              "http://localhost/api/authors"
            ],
            "resources": [
              "object",
              "class@anonymous\u0000D:\\dev\\php\\projects\\php-sf-flex-webpack-encore-vuejs\\vendor\\api-platform\\core\\src\\EventListener\\SerializeListener.php0000022DE7FC07D9"
            ],
            "jsonld_has_context": [
              "boolean",
              true
            ],
            "api_sub_level": [
              "boolean",
              true
            ],
            "iri": [
              "string",
              "/api/authors/1"
            ]
          }
        ]
      ]
    },
    {
      "namespace": "Symfony\\Component\\Serializer",
      "short_class": "Serializer",
      "class": "Symfony\\Component\\Serializer\\Serializer",
      "type": "->",
      "function": "normalize",
      "file": "D:\\dev\\php\\projects\\php-sf-flex-webpack-encore-vuejs\\vendor\\api-platform\\core\\src\\Hydra\\Serializer\\CollectionNormalizer.php",
      "line": 89,
      "args": [
        [
          "object",
          "App\\Entity\\Library\\Author"
        ],
        [
          "string",
          "jsonld"
        ],
        [
          "array",
          {
            "collection_operation_name": [
              "string",
              "get"
            ],
            "operation_type": [
              "string",
              "collection"
            ],
            "resource_class": [
              "string",
              "App\\Entity\\Library\\Author"
            ],
            "request_uri": [
              "string",
              "/api/authors"
            ],
            "uri": [
              "string",
              "http://localhost/api/authors"
            ],
            "resources": [
              "object",
              "class@anonymous\u0000D:\\dev\\php\\projects\\php-sf-flex-webpack-encore-vuejs\\vendor\\api-platform\\core\\src\\EventListener\\SerializeListener.php0000022DE7FC07D9"
            ],
            "jsonld_has_context": [
              "boolean",
              true
            ],
            "api_sub_level": [
              "boolean",
              true
            ]
          }
        ]
      ]
    },
    {
      "namespace": "ApiPlatform\\Core\\Hydra\\Serializer",
      "short_class": "CollectionNormalizer",
      "class": "ApiPlatform\\Core\\Hydra\\Serializer\\CollectionNormalizer",
      "type": "->",
      "function": "normalize",
      "file": "D:\\dev\\php\\projects\\php-sf-flex-webpack-encore-vuejs\\vendor\\api-platform\\core\\src\\Hydra\\Serializer\\PartialCollectionViewNormalizer.php",
      "line": 49,
      "args": [
        [
          "object",
          "ApiPlatform\\Core\\Bridge\\Doctrine\\Orm\\Paginator"
        ],
        [
          "string",
          "jsonld"
        ],
        [
          "array",
          {
            "collection_operation_name": [
              "string",
              "get"
            ],
            "operation_type": [
              "string",
              "collection"
            ],
            "resource_class": [
              "string",
              "App\\Entity\\Library\\Author"
            ],
            "request_uri": [
              "string",
              "/api/authors"
            ],
            "uri": [
              "string",
              "http://localhost/api/authors"
            ],
            "resources": [
              "object",
              "class@anonymous\u0000D:\\dev\\php\\projects\\php-sf-flex-webpack-encore-vuejs\\vendor\\api-platform\\core\\src\\EventListener\\SerializeListener.php0000022DE7FC07D9"
            ],
            "jsonld_has_context": [
              "boolean",
              true
            ],
            "api_sub_level": [
              "boolean",
              true
            ]
          }
        ]
      ]
    },
    {
      "namespace": "ApiPlatform\\Core\\Hydra\\Serializer",
      "short_class": "PartialCollectionViewNormalizer",
      "class": "ApiPlatform\\Core\\Hydra\\Serializer\\PartialCollectionViewNormalizer",
      "type": "->",
      "function": "normalize",
      "file": "D:\\dev\\php\\projects\\php-sf-flex-webpack-encore-vuejs\\vendor\\api-platform\\core\\src\\Hydra\\Serializer\\CollectionFiltersNormalizer.php",
      "line": 65,
      "args": [
        [
          "object",
          "ApiPlatform\\Core\\Bridge\\Doctrine\\Orm\\Paginator"
        ],
        [
          "string",
          "jsonld"
        ],
        [
          "array",
          {
            "collection_operation_name": [
              "string",
              "get"
            ],
            "operation_type": [
              "string",
              "collection"
            ],
            "resource_class": [
              "string",
              "App\\Entity\\Library\\Author"
            ],
            "request_uri": [
              "string",
              "/api/authors"
            ],
            "uri": [
              "string",
              "http://localhost/api/authors"
            ],
            "resources": [
              "object",
              "class@anonymous\u0000D:\\dev\\php\\projects\\php-sf-flex-webpack-encore-vuejs\\vendor\\api-platform\\core\\src\\EventListener\\SerializeListener.php0000022DE7FC07D9"
            ]
          }
        ]
      ]
    },
    {
      "namespace": "ApiPlatform\\Core\\Hydra\\Serializer",
      "short_class": "CollectionFiltersNormalizer",
      "class": "ApiPlatform\\Core\\Hydra\\Serializer\\CollectionFiltersNormalizer",
      "type": "->",
      "function": "normalize",
      "file": "D:\\dev\\php\\projects\\php-sf-flex-webpack-encore-vuejs\\vendor\\symfony\\serializer\\Serializer.php",
      "line": 133,
      "args": [
        [
          "object",
          "ApiPlatform\\Core\\Bridge\\Doctrine\\Orm\\Paginator"
        ],
        [
          "string",
          "jsonld"
        ],
        [
          "array",
          {
            "collection_operation_name": [
              "string",
              "get"
            ],
            "operation_type": [
              "string",
              "collection"
            ],
            "resource_class": [
              "string",
              "App\\Entity\\Library\\Author"
            ],
            "request_uri": [
              "string",
              "/api/authors"
            ],
            "uri": [
              "string",
              "http://localhost/api/authors"
            ],
            "resources": [
              "object",
              "class@anonymous\u0000D:\\dev\\php\\projects\\php-sf-flex-webpack-encore-vuejs\\vendor\\api-platform\\core\\src\\EventListener\\SerializeListener.php0000022DE7FC07D9"
            ]
          }
        ]
      ]
    },
    {
      "namespace": "Symfony\\Component\\Serializer",
      "short_class": "Serializer",
      "class": "Symfony\\Component\\Serializer\\Serializer",
      "type": "->",
      "function": "normalize",
      "file": "D:\\dev\\php\\projects\\php-sf-flex-webpack-encore-vuejs\\vendor\\symfony\\serializer\\Serializer.php",
      "line": 106,
      "args": [
        [
          "object",
          "ApiPlatform\\Core\\Bridge\\Doctrine\\Orm\\Paginator"
        ],
        [
          "string",
          "jsonld"
        ],
        [
          "array",
          {
            "collection_operation_name": [
              "string",
              "get"
            ],
            "operation_type": [
              "string",
              "collection"
            ],
            "resource_class": [
              "string",
              "App\\Entity\\Library\\Author"
            ],
            "request_uri": [
              "string",
              "/api/authors"
            ],
            "uri": [
              "string",
              "http://localhost/api/authors"
            ],
            "resources": [
              "object",
              "class@anonymous\u0000D:\\dev\\php\\projects\\php-sf-flex-webpack-encore-vuejs\\vendor\\api-platform\\core\\src\\EventListener\\SerializeListener.php0000022DE7FC07D9"
            ]
          }
        ]
      ]
    },
    {
      "namespace": "Symfony\\Component\\Serializer",
      "short_class": "Serializer",
      "class": "Symfony\\Component\\Serializer\\Serializer",
      "type": "->",
      "function": "serialize",
      "file": "D:\\dev\\php\\projects\\php-sf-flex-webpack-encore-vuejs\\vendor\\api-platform\\core\\src\\EventListener\\SerializeListener.php",
      "line": 69,
      "args": [
        [
          "object",
          "ApiPlatform\\Core\\Bridge\\Doctrine\\Orm\\Paginator"
        ],
        [
          "string",
          "jsonld"
        ],
        [
          "array",
          {
            "collection_operation_name": [
              "string",
              "get"
            ],
            "operation_type": [
              "string",
              "collection"
            ],
            "resource_class": [
              "string",
              "App\\Entity\\Library\\Author"
            ],
            "request_uri": [
              "string",
              "/api/authors"
            ],
            "uri": [
              "string",
              "http://localhost/api/authors"
            ],
            "resources": [
              "object",
              "class@anonymous\u0000D:\\dev\\php\\projects\\php-sf-flex-webpack-encore-vuejs\\vendor\\api-platform\\core\\src\\EventListener\\SerializeListener.php0000022DE7FC07D9"
            ]
          }
        ]
      ]
    },
    {
      "namespace": "ApiPlatform\\Core\\EventListener",
      "short_class": "SerializeListener",
      "class": "ApiPlatform\\Core\\EventListener\\SerializeListener",
      "type": "->",
      "function": "onKernelView",
      "file": null,
      "line": null,
      "args": [
        [
          "object",
          "Symfony\\Component\\HttpKernel\\Event\\GetResponseForControllerResultEvent"
        ],
        [
          "string",
          "kernel.view"
        ],
        [
          "object",
          "Symfony\\Component\\HttpKernel\\Debug\\TraceableEventDispatcher"
        ]
      ]
    },
    {
      "namespace": "",
      "short_class": "",
      "class": "",
      "type": "",
      "function": "call_user_func",
      "file": "D:\\dev\\php\\projects\\php-sf-flex-webpack-encore-vuejs\\vendor\\symfony\\event-dispatcher\\Debug\\WrappedListener.php",
      "line": 104,
      "args": [
        [
          "array",
          [
            [
              "object",
              "ApiPlatform\\Core\\EventListener\\SerializeListener"
            ],
            [
              "string",
              "onKernelView"
            ]
          ]
        ],
        [
          "object",
          "Symfony\\Component\\HttpKernel\\Event\\GetResponseForControllerResultEvent"
        ],
        [
          "string",
          "kernel.view"
        ],
        [
          "object",
          "Symfony\\Component\\HttpKernel\\Debug\\TraceableEventDispatcher"
        ]
      ]
    },
    {
      "namespace": "Symfony\\Component\\EventDispatcher\\Debug",
      "short_class": "WrappedListener",
      "class": "Symfony\\Component\\EventDispatcher\\Debug\\WrappedListener",
      "type": "->",
      "function": "__invoke",
      "file": "D:\\dev\\php\\projects\\php-sf-flex-webpack-encore-vuejs\\vendor\\symfony\\event-dispatcher\\EventDispatcher.php",
      "line": 212,
      "args": [
        [
          "object",
          "Symfony\\Component\\HttpKernel\\Event\\GetResponseForControllerResultEvent"
        ],
        [
          "string",
          "kernel.view"
        ],
        [
          "object",
          "Symfony\\Component\\EventDispatcher\\EventDispatcher"
        ]
      ]
    },
    {
      "namespace": "Symfony\\Component\\EventDispatcher",
      "short_class": "EventDispatcher",
      "class": "Symfony\\Component\\EventDispatcher\\EventDispatcher",
      "type": "->",
      "function": "doDispatch",
      "file": "D:\\dev\\php\\projects\\php-sf-flex-webpack-encore-vuejs\\vendor\\symfony\\event-dispatcher\\EventDispatcher.php",
      "line": 44,
      "args": [
        [
          "array",
          [
            [
              "object",
              "Symfony\\Component\\EventDispatcher\\Debug\\WrappedListener"
            ],
            [
              "object",
              "Symfony\\Component\\EventDispatcher\\Debug\\WrappedListener"
            ],
            [
              "object",
              "Symfony\\Component\\EventDispatcher\\Debug\\WrappedListener"
            ],
            [
              "object",
              "Symfony\\Component\\EventDispatcher\\Debug\\WrappedListener"
            ],
            [
              "object",
              "Symfony\\Component\\EventDispatcher\\Debug\\WrappedListener"
            ]
          ]
        ],
        [
          "string",
          "kernel.view"
        ],
        [
          "object",
          "Symfony\\Component\\HttpKernel\\Event\\GetResponseForControllerResultEvent"
        ]
      ]
    },
    {
      "namespace": "Symfony\\Component\\EventDispatcher",
      "short_class": "EventDispatcher",
      "class": "Symfony\\Component\\EventDispatcher\\EventDispatcher",
      "type": "->",
      "function": "dispatch",
      "file": "D:\\dev\\php\\projects\\php-sf-flex-webpack-encore-vuejs\\vendor\\symfony\\event-dispatcher\\Debug\\TraceableEventDispatcher.php",
      "line": 139,
      "args": [
        [
          "string",
          "kernel.view"
        ],
        [
          "object",
          "Symfony\\Component\\HttpKernel\\Event\\GetResponseForControllerResultEvent"
        ]
      ]
    },
    {
      "namespace": "Symfony\\Component\\EventDispatcher\\Debug",
      "short_class": "TraceableEventDispatcher",
      "class": "Symfony\\Component\\EventDispatcher\\Debug\\TraceableEventDispatcher",
      "type": "->",
      "function": "dispatch",
      "file": "D:\\dev\\php\\projects\\php-sf-flex-webpack-encore-vuejs\\vendor\\symfony\\http-kernel\\HttpKernel.php",
      "line": 156,
      "args": [
        [
          "string",
          "kernel.view"
        ],
        [
          "object",
          "Symfony\\Component\\HttpKernel\\Event\\GetResponseForControllerResultEvent"
        ]
      ]
    },
    {
      "namespace": "Symfony\\Component\\HttpKernel",
      "short_class": "HttpKernel",
      "class": "Symfony\\Component\\HttpKernel\\HttpKernel",
      "type": "->",
      "function": "handleRaw",
      "file": "D:\\dev\\php\\projects\\php-sf-flex-webpack-encore-vuejs\\vendor\\symfony\\http-kernel\\HttpKernel.php",
      "line": 66,
      "args": [
        [
          "object",
          "Symfony\\Component\\HttpFoundation\\Request"
        ],
        [
          "integer",
          1
        ]
      ]
    },
    {
      "namespace": "Symfony\\Component\\HttpKernel",
      "short_class": "HttpKernel",
      "class": "Symfony\\Component\\HttpKernel\\HttpKernel",
      "type": "->",
      "function": "handle",
      "file": "D:\\dev\\php\\projects\\php-sf-flex-webpack-encore-vuejs\\vendor\\symfony\\http-kernel\\Kernel.php",
      "line": 190,
      "args": [
        [
          "object",
          "Symfony\\Component\\HttpFoundation\\Request"
        ],
        [
          "integer",
          1
        ],
        [
          "boolean",
          true
        ]
      ]
    },
    {
      "namespace": "Symfony\\Component\\HttpKernel",
      "short_class": "Kernel",
      "class": "Symfony\\Component\\HttpKernel\\Kernel",
      "type": "->",
      "function": "handle",
      "file": "D:\\dev\\php\\projects\\php-sf-flex-webpack-encore-vuejs\\public\\index.php",
      "line": 25,
      "args": [
        [
          "object",
          "Symfony\\Component\\HttpFoundation\\Request"
        ]
      ]
    }
  ]
}

Move on Angular 6

I don't know if devxtrem is compliant with that version but i need to use an Angular6 version of the app.

Login JS : find a way to remove the isLoggedIn flag from localStorage when an API call return 403

For instance, when the user log in successfully, then a flag is set in localStorage, but no mecanims exists to remove it when a future API call return 403

Maybe the pattern is not good: should we keep information in localStorage ?
A user come into the app, if we don't use the localStorage then we have to do an HTTP call to check if he is connected (with its cookie we can bind the PHPSessId, and then identify the user with the session). If we use the localStorage we don't have to do the call but, we might have an error with the first next API call because in fact the user was not authentified.

install instructions

i install this project with
composer create-project symfony/skeleton sf-flex-encore-vuejs

try run
npm run init-project

and get

:~/PhpstormProjects/sf-flex-encore-vuejs$ npm run init-project
npm ERR! missing script: init-project

What I miss?

Quasar icons seems to not be used by browser

With PHPBuiltInServer, when i go to the page Form with Quasar and VueJS, no icons are rendered. The toast on login is crappy, the eye in the password fied is not clickable...

PHP tests are failing coz of deps deprecations

Here is the console output

  8x: A tree builder without a root node is deprecated since Symfony 4.2 and will not be supported anymore in 5.0.
    8x in ToolsAbstract::setUpBeforeClass from App\Tests\Common

  6x: Passing a RoleHierarchyInterface to "Symfony\Component\Security\Core\Authorization\Voter\ExpressionVoter::__construct()" is deprecated since Symfony 4.2. Pass an AuthorizationCheckerInterface instead.
    4x in HTTP200WebPagesTest::testHttp200OnAllPages from App\Tests\Controller
    1x in LoginJsonTest::testLogin from App\Tests\Controller
    1x in LoginJwtTest::testLogin from App\Tests\Controller

  2x: Using a string "HTTP_BAD_REQUEST" as a constant of the "Symfony\Component\HttpFoundation\Response" class is deprecated since API Platform 2.1 and will not be possible anymore in API Platform 3. Use the Sy
mfony's custom YAML extension for PHP constants instead (i.e. "!php/const Symfony\Component\HttpFoundation\Response::HTTP_BAD_REQUEST").
    2x in ToolsAbstract::setUpBeforeClass from App\Tests\Common

  2x: The "lexik_jwt_authentication.private_key_path" configuration key is deprecated since version 2.5. Use "lexik_jwt_authentication.secret_key" instead.
    2x in ToolsAbstract::setUpBeforeClass from App\Tests\Common

  2x: The "lexik_jwt_authentication.public_key_path" configuration key is deprecated since version 2.5. Use "lexik_jwt_authentication.public_key" instead.
    2x in ToolsAbstract::setUpBeforeClass from App\Tests\Common

  1x: Enabling the "sensio_framework_extra.router.annotations" configuration is deprecated since version 5.2. Set it to false and use the "Symfony\Component\Routing\Annotation\Route" annotation from Symfony its
elf.
    1x in ToolsAbstract::setUpBeforeClass from App\Tests\Common

  1x: The "Symfony\Component\Translation\MessageSelector" class is deprecated since Symfony 4.2, use IdentityTranslator instead.
    1x in ToolsAbstract::setUpBeforeClass from App\Tests\Common

  1x: The "Sensio\Bundle\FrameworkExtraBundle\Configuration\Method" annotation is deprecated since version 5.2. Use "Symfony\Component\Routing\Annotation\Route" instead.
    1x in HTTP200WebPagesTest::testLogin from App\Tests\Controller

  1x: The "sensio_framework_extra.routing.loader.annot_class" service is deprecated since version 5.2
    1x in HTTP200WebPagesTest::testHttp200OnAllPages from App\Tests\Controller

  1x: The "Sensio\Bundle\FrameworkExtraBundle\Routing\AnnotatedRouteControllerLoader" class is deprecated since version 5.2. Use "Symfony\Bundle\FrameworkBundle\Routing\AnnotatedRouteControllerLoader" instead.
    1x in HTTP200WebPagesTest::testHttp200OnAllPages from App\Tests\Controller

  1x: The "sensio_framework_extra.routing.loader.annot_dir" service is deprecated since version 5.2
    1x in HTTP200WebPagesTest::testHttp200OnAllPages from App\Tests\Controller

  1x: The "sensio_framework_extra.routing.loader.annot_file" service is deprecated since version 5.2
    1x in HTTP200WebPagesTest::testHttp200OnAllPages from App\Tests\Controller

  1x: Twig Filter "transchoice" is deprecated since version 4.2. Use "trans" with parameter "%count%" instead in C:\dev\projects\me_and_poc\php-sf-flex-webpack-encore-vuejs\vendor\easycorp\easyadmin-bundle\src\
Resources\views\default\list.html.twig at line 34.
    1x in HTTP200WebPagesTest::testHttp200OnAllPages from App\Tests\Controller

  1x: Twig Filter "transchoice" is deprecated since version 4.2. Use "trans" with parameter "%count%" instead in C:\dev\projects\me_and_poc\php-sf-flex-webpack-encore-vuejs\vendor\easycorp\easyadmin-bundle\src\
Resources\views\default\list.html.twig at line 35.
    1x in HTTP200WebPagesTest::testHttp200OnAllPages from App\Tests\Controller

  1x: Twig Filter "transchoice" is deprecated since version 4.2. Use "trans" with parameter "%count%" instead in C:\dev\projects\me_and_poc\php-sf-flex-webpack-encore-vuejs\vendor\easycorp\easyadmin-bundle\src\
Resources\views\default\field_association.html.twig at line 20.
    1x in HTTP200WebPagesTest::testHttp200OnAllPages from App\Tests\Controller
  • easyAdminBundle is responsible of 3 last Twig alerts
  • others are my own responsibility

Needs some help to resolve them quickly coz i don't have time

Add a way to keep the user authentified when you do a refresh on a vuejs page

For instance : a user goes to /demo/books
then it's redirected to /demo/books#/login (or something like this)
then you fill the form and validate the form
if it's ok you are redirected on the todos list (to be finished)

but nothing is stored anywhere to check if the user is already loggedIn => on server side we should store if a user is logged (how to do this with Sf2 and json-login ?) Then, the vue-router guards should do an http-call and store response in cache for X minutes (use PouchDB for this ?) if delay is over do the call again. If an error HTTP (403...) happen then clear the cache...

Investigate on this feature

Test fail: ApiPlatformCustomRoutesWithParamConverterTest::testBookSpecialSample3WithErrors

I don't know if it's because of a version of PHP i'm using...
I have to find since when this test is failing
It should not coz this is the reviver library that manage this part normally

1) App\Tests\Normalization\ApiPlatformCustomRoutesWithParamConverterTest::testBookSpecialSample3WithErrors
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'book.editors[0].editor: jsonOrArray for editor must be string or array'
+'book.editors[0].editor: Only variables should be passed by reference'

set env for javascript in config.js

No idea on how to do this:

  • make an SF2 command to parse .env file and write it into config.js and finally run it with npm command ?
  • parse it with npm package ?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.