I agree using static vars since traits don't allow for constants is a bit ugly, but the only other option is to implement PreventBlockeUsers as a base with a protected method that would be what "ACTION_NONE" does and then specialize the trait as PreventBlockedUsersWithError (or a better name) that overrides that protected method to do what "ACTION_ERROR" does.

In that way the implementers of classes can choose what is the behavior by picking the right trait rather than having to set a "magic" property in the constructor.