Add path assumes /[type]/add/[bundle] which is not always the case

Created on 31 October 2023, 8 months ago
Updated 8 April 2024, 3 months ago

Problem/Motivation

Entity Construction Kit β†’ provides entity add paths at /admin/content/[type]/add/[bundle], not at /[type]/add/[bundle], which appears to be what Views Add Button assumes is uniformly the case.

Steps to reproduce

  1. Create an ECK entity type
  2. Create a view listing entities of those type with an add button.

Clicking on the button will result in a 404.

Proposed resolution

Forgive me, but I'm back into Drupal after nearly a decade away, which has demoted me to site builder status until the stars align, a choir of angels sings, and the whole Symfony/PSR-4 thing suddenly makes sense to me.

It seems to me that there should be a service somewhere which when given an entity type and bundle name will hand back a path to the add form, but I haven't a clue where to go looking for such a thing or how to use it when I found it. (In less professional days, back on the island, it would have been a global function.)

A workaround is to create a path alias from /admin/content/[type]/add to /[type]/add. With Sub-pathauto β†’ enabled, that will automatically fix the immediate problem for all bundles of that entity type.

πŸ› Bug report
Status

Needs review

Version

2.0

Component

Code: General

Created by

πŸ‡¦πŸ‡ΊAustralia Katy Swain

Live updates comments and jobs are added and updated live.
Sign in to follow issues

Merge Requests

Comments & Activities

  • Issue created by @Katy Swain
  • πŸ‡ΊπŸ‡ΈUnited States laboratory.mike

    Hi there Katy, I'm glad to explain both what the overall issue is, how I solved it when setting up the module, and will add some instructions on what to do for the ECK content.

    Problem

    The root issue concerning paths also extends to the names of routes used by certain entity types. For example, the route name for adding a node is "node.add" but for a user its "user.admin_create" . Some entities have bundles, which features into access and the add process, and further, certain entities in contrib modules, like Group, have further considerations beyond that.

    IOW, there isn't a universal way to do entity creation.

    Solution

    To manage this, I set up a plugin system, with the most relevant folder to check out being here:

    views_add_button/src/Plugin/views_add_button

    The ViewsAddButtonDefault.php file contains the default logic you are observing. It tries its best, but as you saw, it can't cover everything.

    Next, I created Node, Taxonomy, and User specific plugins, which handle specifics for each entity type.

    There's also a views_add_button_group contrib module for Groups and Group Content.

    For ECK

    If you're in a position to do so, try creating a custom module, adding an src/Plugin/views_add_button folder, and copying in one of the contrib module's plugins, and modifying it to suit your case. Otherwise, I know ECK's pretty popular and I could add a submodule to support ECK entities. I would just need your help to QA it.

  • Assigned to Terry_Kolodiy
  • Merge request !5add plugin for ECK entities β†’ (Open) created by Terry_Kolodiy
  • Issue was unassigned.
  • Status changed to Needs review 3 months ago
  • πŸ‡ΊπŸ‡¦Ukraine Terry_Kolodiy

    Hi! I've added a Merge Request with the plugin for ECK entities. Could you please check? Thanks

Production build 0.69.0 2024