Je reçois cette erreur dans une application que je migre de SF2.0.x vers SF2.7:
[1] Symfony\Component\Debug\Exception\FatalErrorException: Compile Error: Cannot use isset() on the result of an expression (you can use "null !== expression" instead)
at n/a
in /var/www/html/reptooln_admin/app/cache/dev/twig/68/7f/63589dd3687cb849dd68e6b6c10aa99eda1d82f95a5f3ac52a864d200499.php line 39
Je ne sais pas ce qui ne fonctionne pas ou comment résoudre ce problème, alors j'ai besoin de conseils. Voici la ligne dans le fichier de cache où Stacktrace est signalé:
if ((((empty((isset($context["form_action"]) ? $context["form_action"] : $this->getContext($context, "form_action"))) == true) || (isnull((isset($context["form_action"]) ? $context["form_action"] : $this->getContext($context, "form_action"))) == true)) || (isset((isset($context["form_action"]) ? $context["form_action"] : $this->getContext($context, "form_action"))) == false))) {
echo " ";
$context["form_action"] = "";
echo " ";
Qu'est-ce que j'ai cette TwigExtension:
class PDOneTwigExtension extends \Twig_Extension
{
public function getFilters()
{
return array(
'var_dump' => new \Twig_Filter_Function('var_dump'),
'empty' => new \Twig_Filter_Function('empty', array($this, 'is_empty')),
'isset' => new \Twig_Filter_Function('isset', array($this, 'is_set')),
'isnull' => new \Twig_Filter_Function('isnull', array($this, 'is_null')),
'ucfirst' => new \Twig_Filter_Function('ucfirst', array($this, 'uc_first')),
'ucwords' => new \Twig_Filter_Function('ucwords', array($this, 'uc_words')),
'count' => new \Twig_Filter_Function('count', array($this, 'co_unt')),
'sizeof' => new \Twig_Filter_Function('sizeof', array($this, 'size_of')),
'concat' => new \Twig_Filter_Function('concat', array($this, 'concat')),
'in_array' => new \Twig_Filter_Function('in_array', array($this, 'inarray')),
'array' => new \Twig_Filter_Function('array', array($this, 'array_')),
'add_to_array' => new \Twig_Filter_Function('add_to_array', array($this, 'add_to_array')),
'replace' => new \Twig_Filter_Function('replace', array($this, 'replace')),
'htmlentitydecode' => new \Twig_Filter_Function('htmlentitydecode', array($this, 'htmlentitydecode'))
);
}
public function is_empty($sentence)
{
return empty($sentence) ? true : false;
}
// rest of methods goes here
public function getName()
{
return 'pdone_twig_extension';
}
}
Et j'utilise le template comme suit:
{% if form_action|empty == true or form_action|isnull == true or form_action|isset == false %} {% set form_action = '' %} {% endif %}
Où pourrait être le problème ici? Aucun conseil?
De documentation :
isset () ne fonctionne qu'avec des variables, car tout ce qui va passer entraînerait une erreur d'analyse.
Vous ne passez pas directement une variable à isset()
. Vous devez donc d'abord calculer la valeur, l'assigner à une variable, puis la transmettre à isset()
.
Par exemple, ce que vous faites en ce moment est quelque chose comme:
if(isset($something === false)) { } // throws a parse error, because $something === false is not a variable
Ce que vous devez faire à la place est:
$something = false;
if(isset($something)) { ... }
Pourquoi faites-vous tant de code inutile?
Pourquoi ne pas simplement:
{% if form_action|empty == true %} {% set form_action = '' %} {% endif %}