lundi 16 juillet 2018

Laravel CMS logic for shared functions/fields

I'm pretty new to Laravel, so I'm struggling with the logic for what is essentially a CMS with multiple content types.

Say I have 3 content types; Food, Books and Cars. Every item in all content types has a name, url and a couple of other fields.

I can create, update and delete any of these resources with most likely the same code replicated 3 times. The only difference would be with a create or update as the field names would differ between them.

Should I just duplicate these fields/functions for each controller, or create some common ground in one place?

The cross over of fields/functions initially will not be huge, however it seems inefficient lets say if I had 10 content types and I want to add one field to all of them I have to update code in a large amount of places.

If I had a central "Node" that contained the id's and common fields for ALL items in every content type, then have this linked to individual tables for the custom fields, I'm in a much better position when I want to add, update or delete common fields.

I've currently got 3 controllers and have only worked on one so far so I have an index(), show() and edit() function in the controller.

As a test I created a Node model with php artisan make:model Node -mcr and simply extended the existing Controllers so they were extending NodeController. Which just threw up an error like this;

Declaration of App\Http\Controllers\FoodController::show(App\Food$food) should be compatible with App\Http\Controllers\NodeController::show(App\Node $node)

This is likely not the way to go about it anyway, but I simply do not know the recommended practice for this.



via Chebli Mohamed

Aucun commentaire:

Enregistrer un commentaire