把php代码放到yii框架的registerScript里面[duplicate]

mzillmmw  于 2022-11-09  发布在  PHP
关注(0)|答案(1)|浏览(148)

此问题在此处已有答案

PHP parse/syntax errors; and how to solve them(20个答案)
两年前就关门了。
我想在yii1的Yii::app()->clientScript->registerScript里面放一个php代码
我怎么能把它放进这个里面呢?

<?php Yii::app()->clientScript->registerScript("form", <<<JAVASCRIPT
// I want the PHP code inside of this
JAVASCRIPT, CClientScript::POS_END); ?>

除了在代码中间结束PHP之外,还有什么方法吗?

编辑

如果我把<?PHP ?>放在中间,我会得到一个错误
分析错误:语法错误,第275行出现意外的文件结尾
且该线路

JAVASCRIPT, CClientScript::POS_END); ?>
6ljaweal

6ljaweal1#

由于您可以在视图上下文中通过$this访问控制器示例,因此我建议您执行以下操作:
1.创建部分视图php文件,在那里你可以构建你的mixin(js + php),它显然将包含任何脚本类型与一些条件的顶部PHP。
1.在视图上下文中使用CBaseController#renderPartial(根据第三个参数return = true,它实际上返回字符串而不是呈现),以字符串形式获取mixin视图内容,并将其作为第二个参数传递给Yii::app()->clientScript->registerScript
实作如下所示:

// _partial_view.php 
// here is your mixin between js + php
/* @var $this CController */

<?php

echo '<script>' .
   Yii::app()->user->isGuest 
   ? 'alert("you\'re guest")' 
   : 'alert("you\'re logged user")' 
. '</script>';

然后返回到注册js调用:

<?php Yii::app()->clientScript
                ->registerScript("form",
                                 $this->renderPartial('_partial_view.php', [], true), // setting 3rd parameter to true is crucial in order to capture the string content instead of rendering it into the view
                                 CClientScript::POS_END); ?>

相关问题