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; ?>'){
我来了,
尝试访问非对象的属性(第3行)。
这是有道理的,因为我在这里没有对象。
问题是第二个if
正在运行,即使第一个if
条件返回FALSE。
Yii::app()->controller->action->id
不等于更新&#39;所以,第二个IF不应该永远不会执行。所以,我不明白。
任何人都可以澄清这里发生的事情吗?
干杯
答案 0 :(得分:2)
PHP将始终评估,因为这正在发生在服务器端,而Javascript将在客户端执行。当代码到达浏览器时,PHP已经全部被评估和替换,只留下了Javascript。换句话说,视图中的所有PHP都将被评估(可能是由Apache中的PHP解释器),并且在代码在浏览器中运行之前,Javascript无关紧要。
您需要将服务器端和客户端代码分开。
您的代码在服务器端失败,因为所有PHP都必须评估以呈现Javascript,在这种情况下,第三个PHP块:
<? if(isset($model)) echo $model->createUser->id; ?>
看起来当PHP运行时,已经设置了$ model,而不是预期的对象。