laravel变量打印1而不是字符串

时间:2019-03-11 21:37:12

标签: php laravel laravel-blade

在将模型变量打印为输入值时 此代码:

value="{{ old('name',  $event->name or null) }}"

打印: 1

和此代码:

value="{{ old('name',  isset($evento->name) ? $evento->name : null) }}"

打印:“实际值”

有人知道为什么吗?如果我没看错文档,第一个示例就是假设的工作。

3 个答案:

答案 0 :(得分:0)

您的代码的行为方式是这样的,因为在您的第一个代码中,您基本上是在打印布尔表达式。

(new Component<'a', 'b'>('a', 'b'))
.andThen(new Component<'b', 'c'>('b', 'c'))
.andThen(new Component<'c', 'd'>('c', 'd'))
.andThen(new Component<'d', 'e'>('d', 'e'))
.andThen(new Component<'e', 'f'>('e', 'f'))
.andThen(new Component<'f', 'g'>('f', 'g'))

将返回一个布尔值,即0或1。另一方面,在第二版代码中,您正在使用执行以下操作的三元运算符:

  1. 检查$ evento-> name是否退出
  2. 如果是,请打印$ evento-> name
  3. 如果没有返回null

答案 1 :(得分:0)

如果进行测试并尝试转储$event->name or null返回的值,则可以看到它重新调整了true,在您的html中,它转换为1

您的第二种方法可以转换为伪代码:

if (isset(...))
    return name
else
    return null

这实际上将返回name值或null值。

依靠您的PHP (7.0) / Laravel (5.5)版本,您可以用两种较短的方式编写文字。

// PHP 7.0
$evento->name ?? null

// Laravel 5.5
optional($evento)->name

答案 2 :(得分:0)

就我而言,我带着职位标题中所述的确切问题来到这里,但是我的情况与OP的情况略有不同。

我正在从具有or而不是??的旧Laravel刀片代码进行更新。

{{ $variable or 'Default Value' }}更改为{{ $variable ?? 'Default Value' }}对我有用。