# Demonstrate various Drupal 8 features. ## "blog" branch This contains a solution to the exercise for the entity chapter. The exercise is the following: * Create a `Blog` entity and a `BlogType` entity as its bundle entity. Blogs are entities created by a `User`. Various bundles could be a traditional blog, an image gallery and a vlog. * Blog items (instances of the `Blog` entity) should be translatable and revisioned by default. * Access control to the `Blog` entity should be at the entity type level (`Blog`), not the entity bundle level (`BlogType`). * Both should have a complete CRUD UI: list, display, add/edit, delete * Blogs must appear as tabs under the user profile page, with sub-tabs per blog type * To better understand what's going on, it is probably better _not_ to use the Drupal console `generate` commands. ### Steps 1. Create the module and a `Blog` content entity in it. 2. Create a `BlogType` config entity as the bundle entity for `Blog`, enabling its collection route. 3. Implement skeletons for add/edit/delete forms and implement a `BlogType` config entity schema to be able to test config import/export and the delete form 4. Complete the implementation of the `BlogType` collection route to show type, name, description, and operations. 5. Complete the `BlogType` CRUD by implementing the `BlogTypeForm`. 6. Complete the implementation of the `Blog` collection route to show id, title, author, and operations. 7. Complete the `Blog` CRUD by implementing the `BlogForm`. 8. Expose a view of the user blogs on their profile as a tab.