【问题标题】:cakephp - How can I set a default value of a variable passed from controller to view?cakephp - 如何设置从控制器传递到视图的变量的默认值?
【发布时间】:2017-04-11 10:40:13
【问题描述】:

我还是 CakePHP 的新手。
我有一个控制器,它在满足某些条件时设置变量“V1”。
现在,当我没有设置它时,我想让这个“V1”具有默认值 '' 或 null,这样 cakephp 不会抛出通知“错误:变量 'V1' 未设置”。
我在视图中尝试了<?= $V1 = '' ?>,但这导致“V1”即使在我之前在控制器上设置之后也始终为空。
问题:我应该忽略这个通知还是有办法为从控制器传递到视图的变量设置默认值?或者还有其他方法吗?

谢谢 :D

【问题讨论】:

  • 你可以使用<?= $V1 = !empty($V1) ? $V1 : '' ?>
  • @tarikul05 :是的,它的工作。非常感谢:D

标签: php variables cakephp view controller


【解决方案1】:

问题:我应该忽略这个通知还是有办法为从 Controller 传递到 View 的变量设置默认值?或者有没有其他办法?

所有通知和警告都应该修复 - 总是,也不例外。不这样做可能会导致在应用程序中调试问题。不修复它们只是不好的做法。因此,要么确保始终设置它的变量,要么在视图中检查它。

在您的控制器中执行此操作将确保它始终设置为默认值为 null 的视图。

$this->set('v1', isset($v1) ? $v1 : null)

php7 与coalescing operator.

$this->set('v1', $v1 ?? null);

但是,我更喜欢这里的三元运算符,因为它比合并运算符更好阅读 - 恕我直言。

【讨论】:

  • 感谢您的信息,您也可以从视图文件中添加方法吗?我相信它会很有用。
  • 查看文件的方法?我不明白你的意思。但如果是我的想法。不,它会违反 MVC 模式。阅读 MVC(和其他)设计模式。
  • 所以,我尝试阅读一些有关 MVC 设计模式的文章,但他们对此并不十分清楚。我在 MVC 中完全是菜鸟,所以你能告诉我这些代码应该在哪里吗?控制器还是模型?谢谢。
【解决方案2】:

这应该可以工作

    <?= isset($v1)?$v1:''?>

编辑:固定结束标签

【讨论】:

  • 此解决方案有效,但有一个错误,&lt;?= isset($v1)?$v1:''=&gt; 应该是 &lt;?= isset($v1)?$v1:''?&gt; 对吧?
【解决方案3】:

只是为了补充 burzum 的答案。如果您使用的是 PHP 7,您还可以在控制器中使用 null 合并运算符:-

$this->set('v1', $v1 ?? null);

有关详细信息,请参阅PHP docs

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-14
    • 1970-01-01
    • 1970-01-01
    • 2012-02-10
    相关资源
    最近更新 更多