刀片语法错误,空字符串变量

时间:2017-11-09 08:35:33

标签: laravel laravel-5.5

我有这个输入:

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

如果变量为空,我收到了这条消息:

  

解析错误:语法错误,意外''); ?&gt;“中&GT;” (T_CONSTANT_ENCAPSED_STRING),期待','或')'

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

有什么问题?

编辑:我的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);
}

EDIT2: 试过其他方法:

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

他们没有工作。

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

我现在想的是,这是我几个小时前跑的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", 

EDIT4:

我修改了我的代码,但问题是一样的。 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'] : '' }}" />

4 个答案:

答案 0 :(得分:2)

您可以使用array_key_exists

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

答案 1 :(得分:1)

我猜数组数据不包含密钥&#39; en&#39;。

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

祝你好运。

答案 2 :(得分:1)

检查出来:

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

答案 3 :(得分:0)

我发现了错误。我有一些上面的行:

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