0

也许有人可以在这里帮助我。我有这些代码行:

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不等于“更新”,所以第二个 IF 永远不应该执行。所以,我不明白。

谁能澄清一下这里发生了什么?

干杯

4

1 回答 1

2

PHP 将始终评估,因为这是发生在服务器端,而 Javascript 将在客户端执行。当代码到达浏览器时,PHP 已经全部被评估和替换,只剩下 Javascript。换句话说,您视图中的所有 PHP 都将被评估(可能由 Apache 中的 PHP 解释器),并且在代码在浏览器中运行之前,Javascript 无关紧要。

您需要将服务器端代码和客户端代码分开。

您的代码在服务器端失败,因为所有 PHP 都必须评估以呈现 Javascript,在这种情况下,第三个 PHP 块:

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

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

于 2012-06-15T16:20:57.793 回答