为了账号安全,请及时绑定邮箱和手机立即绑定

将 php 代码放在 yii 框架的 registerScript 中

将 php 代码放在 yii 框架的 registerScript 中

PHP
慕哥9229398 2022-12-23 16:28:58
我想在Yii::app()->clientScript->registerScriptyii1里面放一个 php 代码我怎样才能把它放在这个里面?<?php Yii::app()->clientScript->registerScript("form", <<<JAVASCRIPT // I want the PHP code inside of this JAVASCRIPT, CClientScript::POS_END); ?>除了在代码中间结束 PHP 之外还有其他方法吗?编辑如果我放在<?PHP ?>中间,我会得到一个错误解析错误:语法错误,C:\xampp\htdocs\yii\project\protected\views\group_Form.php 中第 275 行的文件意外结束那条线是JAVASCRIPT, CClientScript::POS_END); ?>
查看完整描述

1 回答

?
拉风的咖菲猫

TA贡献1995条经验 获得超2个赞

由于您可以通过视图上下文访问控制器实例$this,我建议您这样做:

  1. 创建局部视图 php 文件,您可以在其中构建您的 mixin(js + php),它显然将包含任何脚本类型,并在 PHP 之上具有某些条件。

  2. 在视图上下文中使用CBaseController#renderPartial(实际上返回字符串而不是渲染,根据第三个参数return = true)将混合视图内容作为字符串获取并将其作为第二个参数传递给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); ?>


查看完整回答
反对 回复 2022-12-23
  • 1 回答
  • 0 关注
  • 121 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号