Yii 为什么即使条件返回false,也会执行这行代码?

Yii 为什么即使条件返回false,也会执行这行代码?,yii,Yii,也许有人能帮我。我有以下几行代码: 1 $(document).ready(function(){ 2 if('<?php echo Yii::app()->controller->action->id?>' == 'update'){ 3 if('<?php echo Yii::app()->user->id;?>' != '<?php echo $model->createUser->id; ?>'){ 1$

也许有人能帮我。我有以下几行代码:

1 $(document).ready(function(){
2 if('<?php echo Yii::app()->controller->action->id?>' == 'update'){
3   if('<?php echo Yii::app()->user->id;?>' != '<?php echo $model->createUser->id; ?>'){
1$(文档).ready(函数(){
2如果(''=''更新'){
3如果(“”!“”){
我越来越

尝试访问非对象的属性(第3行)

这是有道理的,因为我这里没有这个属性的对象

问题是第二个
if
正在运行,即使第一个
if
条件返回FALSE

Yii::app()->controller->action->id
不等于'update',所以第二个IF不应该执行。所以,我不明白

有人能澄清一下这里发生了什么吗


干杯

PHP将始终求值,因为这发生在服务器端,而Javascript将在客户端执行。当代码进入浏览器时,PHP已全部求值并被替换,只剩下Javascript。换句话说,您视图中的所有PHP都将被求值(可能是Apache中的PHP解释器),Javascript在代码在浏览器中运行之前并不重要

您需要分离服务器端和客户端代码

您的代码在服务器端失败,因为所有PHP都必须求值才能呈现Javascript,在本例中,第三个PHP块:

<? if(isset($model)) echo $model->createUser->id; ?>


看起来当PHP运行时,$model已设置,只是没有设置为预期对象。

我应该提供更多详细信息吗?从您在ernie回答中的最后一条评论中,您希望避免什么?请在此处进行评论。错误会进入浏览器,因为在应用程序的输入脚本(即index.PHP)中启用了yi_DEBUG和yi_TRACE_LEVEL在应用程序的根目录中,检查以自行确认。请尝试了解web应用程序流/生命周期的更多信息clear@bool.dev有关于这个主题的任何web源代码吗?那么,让我们看看我是否明白了。这个问题是由于我对服务器端和客户端的不理解造成的?因为php将首先得到评估,所以它将忽略jav因此,无论javascript条件如何,它都将始终运行。是这样吗?是的,就是这样……例如,在web浏览器中的一个工作页面中,您在javascript代码块中使用了PHP,然后查看其源代码。您应该看到所有PHP代码都消失了,只有计算的值它将被执行,但不会输出任何内容。像:这样的项目将永远不会呈现任何内容…就像你只是将代码放在视图中一样,不会显示任何内容,相反,你需要做一个@MEM。ernie说的是,你的第一个
如果
是javascript,那么你的第二个
如果
也是javascript,所以这些不会出现在它们到达客户端浏览器之前进行评估。但是第三个
if
是php,在到达客户端之前将在服务器上进行评估,并且
if
将明显失败,正如您在问题中所提到的。不不不不!当php或APACHE仍在执行时,此错误会进入浏览器。无论任何文档所以所有这些都是有意义的。唯一的问题是应该在那里的isset。我的情况就到此为止。