[解決済み] コンパイルエラーです。式の結果に対して isset() を使用できません。
2022-02-11 09:23:35
質問
SF2.0.xから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
何が原因で失敗しているのか、どのように修正すればいいのかわからないので、アドバイスをお願いします。これは、Stacktraceが報告されたキャッシュファイルの行です。
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 " ";
私が持っているのは、この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';
}
}
そして、以下のようなテンプレートを使っています。
{% if form_action|empty == true or form_action|isnull == true or form_action|isset == false %} {% set form_action = '' %} {% endif %}
どこに問題があるのでしょうか?何かアドバイスはありますか?
解決方法は?
から ドキュメンテーション :
isset() は変数に対してのみ動作し、それ以外を渡すとパースエラーになります。
に直接変数を渡しているわけではありません。
isset()
. そのため、まず値を計算して変数に代入し、その値を
isset()
.
例えば、今やっていることは、こんな感じです。
if(isset($something === false)) { } // throws a parse error, because $something === false is not a variable
その代わりに必要なことは
$something = false;
if(isset($something)) { ... }
関連
-
[解決済み】phpのob_start()の使い道は?
-
[解決済み】予期せぬ例外。SQLSTATE[HY000] [1045] Access denied for user ****@'localhost' (using password: YES)
-
[解決済み】PHPの予期しないT_VARIABLEとは何ですか?
-
[解決済み】Fatal error: mysqli_result 型のオブジェクトは使用できません [終了] 。
-
[解決済み] Uncaught Error: 未定義の関数 mysql_escape_string() の呼び出し。
-
[解決済み] SSLエラー SSL3_GET_SERVER_CERTIFICATE:証明書の検証に失敗しました。
-
[解決済み] 致命的なエラーです。mysqli_result 型のオブジェクトを使用できません [終了] 。
-
[解決済み] PHPを使って現在の年を取得するにはどうすればよいですか?
-
[解決済み] var_dump の結果を文字列に取り込むにはどうすればよいですか?
-
[解決済み] PHPでは@記号はどのように使うのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] [Solved] Fatal error: メンバ関数prepare()のNULLでの呼び出し
-
[解決済み】++と*+の意味は何ですか?
-
[解決済み] SAJAXは死んだか?何を置き換えるべきか?
-
[解決済み】新しいPHPMailerはPHPMailerAutoload.phpが必要?
-
[解決済み】XAMPPのphpMyAdminで「設定にあるcontroluserの接続に失敗しました。
-
[解決済み】Apache + PHPで「ヘッダの前にスクリプトの出力が終了する」件
-
[解決済み】未定義のメソッド mysqli_stmt::get_result を呼び出す。
-
[解決済み】Netbeans 7.4 for PHPで「スーパーグローバルな$_POST配列に直接アクセスしないでください」という警告が発生する。
-
[解決済み】書き込みコンテキストでメソッドの戻り値を使用することができない
-
[解決済み] 致命的なエラーです。mysqli_result 型のオブジェクトを使用できません [終了] 。