Blade 空字符串变量的语法错误

Blade Syntax Error with empty string variable

我有这个输入:

<input class="form-control" type="text" id="nameEng" name="nameEng" value="{{$tagTrans['en']}}" />

如果变量为空,我收到此消息:

Parse error: syntax error, unexpected ''); ?>">' (T_CONSTANT_ENCAPSED_STRING), expecting ',' or ')'

如果它不是空的,一切都是完美的。

有什么问题?

编辑: 我的 Controller@Action 是:

public function newTag($id = 0){

    $tag = array();
    $tagTrans = array();

    if ($id > 0){
        $tag = Tags::where(['id' => $id])
                        -> first()
                        -> toArray();

        $tagTransRaw = TagTrans::where(
                                ['tag_id' => $id ])
                            ->get()
                            ->toArray();

        foreach ($tagTransRaw as $key => $tagTransFE) {
            $tagTrans[$tagTransFE['lang']] = $tagTransFE['text'];
        }  
    }

    $data = array(
            'id' => $id,
            'tag' => $tag,
            'tagTrans' => $tagTrans,
        );

    return view('back/news/newTag', $data);
}

编辑2: 尝试过其他方法:

 - value="{{$tagTrans['en'] or ''}}"
 - value="{{
   !empty($tagTrans['en'])? $tagTrans['en'] : '' }}"

他们没有用。

编辑 3: 我删除了表格中的 value="..."-s 以显示 var_dump($data),@Mr.金字塔询问,现在它在文件末尾显示相同的错误(当它呈现 blade 模板时)。

我现在想这是一个 composer update 错误,我 运行 几个小时前。我检查了 git 更新的包是这些:

package name
version from
version to

"name": "laravel/framework", 
"version": "v5.5.19", 
"version": "v5.5.20", 

"name": "nikic/php-parser", 
"version": "v3.1.1", 
"version": "v3.1.2",

"name": "psy/psysh", 
"version": "v0.8.13", 
"version": "v0.8.14", 

"name": "doctrine/instantiator", 
"version": "1.0.5", 
"version": "1.1.0", 

"name": "phpunit/php-code-coverage", 
"version": "5.2.2", 
"version": "5.2.3",

"name": "phpunit/phpunit", 
"version": "6.4.3", 
"version": "6.4.4", 

"name": "sebastian/comparator", 
"version": "2.0.2", 
"version": "2.1.0", 

编辑4:

我修改了我的代码,但问题是一样的。 var_dump($data):

$data = array(
 "id" => 0
  "tag" => []
  "tagTrans" => []
);

输入现在是这样的:

<input class="form-control" type="text" id="nameEng" name="nameEng" value="{{ array_key_exists('en', $tagTrans) ? $tagTrans['en'] : '' }}" />

我猜数组数据不包含键'en'。

你可以试试这个: value="{{$tagTrans['en'] or ''}}"

祝你好运。

您可以使用 array_key_exists

检查数组中是否存在键
<input class="form-control" type="text" id="nameEng" name="nameEng" 
 value="{{ array_key_exists('en', $tagTrans) ? $tagTrans['en'] : '' }}" />

看看这个:

{{ empty($tagTrans['en']) ? '' : $tagTrans['en'] }}

我发现了错误。上面几行我有这个:

<input type="hidden" name="id" value="{{$id'}}">