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 行目)。

ここにはそのプロパティを持つオブジェクトがないため、これは理にかなっています。

問題は、最初の条件が FALSE を返す場合ifでも、2 番目の条件が実行されていることです。if

Yii::app()->controller->action->id'update' と等しくないため、2 番目の IF は決して実行されません。だから、私は理解していません。

誰かがここで何が起こっているのかを明確にしてもらえますか?

乾杯

4

1 に答える 1

2

Javascriptはクライアント側で実行されますが、サーバー側で発生しているため、PHPは常に評価されます。コードがブラウザに届くまでに、PHP はすべて評価されて置き換えられ、Javascript だけが残ります。別の言い方をすれば、ビュー内のすべての PHP が (おそらく Apache の PHP インタープリターによって) 評価され、コードがブラウザーで実行されるまで Javascript は重要ではありません。

サーバー側とクライアント側のコードを分離する必要があります。

すべての PHP が Javascript をレンダリングするために評価する必要があるため、コードはサーバー側で失敗しています。この場合は、3 番目の PHP ブロックです。

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

PHP が実行されているときに、$model が設定されているように見えますが、期待されるオブジェクトではありません。

于 2012-06-15T16:20:57.793 に答える