Code Monkey home page Code Monkey logo

Comments (7)

birdy247 avatar birdy247 commented on July 25, 2024

I am using the const strategy and have the following config set:

const OCCASION_TYPE_MASS_PARTICIPATION_EVENT = "mass_participation_event";
const OCCASION_TYPE_TRAINING_SESSION = "training_session";
const OCCASION_TYPE_SOCIAL = "social";

    $this->addBehavior('CakeDC/Enum.Enum', ['lists' => [
        'internal_type' => [
            'strategy' => 'const',
            'prefix' => 'OCCASION_TYPE',
            'className' => 'App\\Model\\Entity\\OccasionType',
            'applicationRules' => false
        ]
    ]]);

When I save an entity by allowing a user to select from a select list using the helper

$this->set('priorities', $this->Articles->enum('priority'));

this plugin would save MASS_PARTICIPATION_EVENT. This is ok, but it then makes it very hard to achieve the following:

1/ Query all records with a internal_type of MASS_PARTICIPATION_EVENT
2/ Manually assign the entities property with one of the constants

Previously I would do something like OccasionTypes::OCCASION_TYPE_MASS_PARTICIPATION_EVENT, but this will not work (as this would reference "mass_participation_event" (what I have previously been saving) .

I would still like to use OccasionTypes::OCCASION_TYPE_MASS_PARTICIPATION_EVENT, but maybe if this plugin could provide a method which returns the actual value it will use.

I hope this use case is clear

from enum.

ADmad avatar ADmad commented on July 25, 2024

Use 'lowercase' => true in config and it will save mass_participation_event in db instead of MASS_PARTICIPATION_EVENT. 🙂

from enum.

birdy247 avatar birdy247 commented on July 25, 2024

Thanks @ADmad this works to some extent. I still have to disable the applicationRules to get it to save though.

Is the idea that the value of the constant should be the label to display in select lists etc...?

from enum.

ADmad avatar ADmad commented on July 25, 2024

It should work with application rules enabled too. Do some digging and find out what's the problem.

from enum.

birdy247 avatar birdy247 commented on July 25, 2024

@ADmad I did some testing. I was saving multiple entities in a single transaction. Some of these had a a "null" for the enum value. I can see you already made a PR to allowEmpty.

That did the trick.

I still don't feel I am using the const strategy correctly though.

OCCASION_TYPE_MASS_PARTICIPATION_EVENT = "mass_participation_event"

Presumably the "mass_participation_event" is just a display label that I am now effectlivley using as the const value (when using this in a find query or manually setting the value of internal_type in any beforeSave etc...

Thanks

from enum.

pmoraes avatar pmoraes commented on July 25, 2024

Hey @birdy247, I'll be starting to work on it today.

@ADmad we have this problem, lowercase and and disable the applicationRules won't solve that problem.

For example if you a const:

const OCCASION_TYPE_MASS_PARTICIPATION_EVENT = "Just a test";

and we are using lowercase, I'll save "mass_participation_event" and we won't able to find it in the database because we have other text.

from enum.

birdy247 avatar birdy247 commented on July 25, 2024

Hi @pmoraes Is there a branch for this fix? I am happy to help with the development.

Presumably, we just need a simple "lookup" function whereby you pass the constant and it returns the value that would normally be saved to the DB/added as the value in select lists?

from enum.

Related Issues (19)

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.