Quizás sea por esta nota del manual:
Sintaxis de constantes Cita: Nota:
A diferencia de definir constantes usando define(), las constantes definidas con la palabra clave const deben declararse en el nivel superior del entorno de la aplicación porque se definen en tiempo de ejecución. Esto significa que no pueden declararse dentro de funciones, bucles, sentencias if o bloques try/ catch.
Tampoco entiendo por qué quieres asignarle un valor mediante post a una constante, ya que lo que venga por post puede ser cualquier cosa.
Si vemos la definición de constante en un diccionario:
Cita: Cantidad que tiene un valor fijo en un determinado proceso, cálculo, etc.
Desde mi punto de vista, si no sabemos el valor de una constante antes de ejecutar el código o va a depender de un una operación externa de la que desconocemos el resultado, es que no es una constante.
En otras palabras, si durante una ejecución o en cada ejecucion puede por algún motivo variar su valor, no es una constante si no una variable.