Pregunta

Estoy intentando cargar XML / SWF Charts con Yu y tener algunas dificultades. Por lo que yo puedo decir, el problema parece ser el fin de que Yu se está cargando las etiquetas script en el encabezado.

Esto es lo que las miradas de fuente resultantes como de la cabecera generada por mi guión prueba.php de trabajo (menos Yu).

<HTML>
<script language="javascript">
/*<![CDATA[*/
AC_FL_RunContent = 0;
DetectFlashVer = 0;
var requiredMajorVersion = 10;
var requiredMinorVersion = 0;
var requiredRevision = 45;
/*]]>*/
</script>
<script src="AC_RunActiveContent.js" language="javascript"></script>
<BODY bgcolor="#FFFFFF">

Ahora estoy tratando de conseguir Yii para lograr lo mismo usando este código.

<?php
Yii::app()->clientScript->registerScript('AC_FL_RunContent', 'AC_FL_RunContent = 0;', CClientScript::POS_HEAD);
Yii::app()->clientScript->registerScript('DetectFlashVer', 'DetectFlashVer = 0;', CClientScript::POS_HEAD);
Yii::app()->getClientScript()->registerScriptFile($chartUrl.'/AC_RunActiveContent.js'); 
Yii::app()->clientScript->registerScript('DetectFlashVer', 
'
var requiredMajorVersion = 10;
var requiredMinorVersion = 0;
var requiredRevision = 45;
', CClientScript::POS_HEAD);
?>

Y esto es lo que quiero llegar

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="language" content="en" />
<link rel="stylesheet" type="text/css" href="/css/main.css" />
<link rel="stylesheet" type="text/css" href="/css/form.css" />
<link rel="stylesheet" type="text/css" href="/css/components.css" />
<link rel="stylesheet" type="text/css" href="/css/pages.css" />
<script type="text/javascript" src="/assets/e5f807c3/AC_RunActiveContent.js"></script>
<script type="text/javascript">
/<![CDATA[/
AC_FL_RunContent = 0;
DetectFlashVer = 0;

var requiredMajorVersion = 10; var requiredMinorVersion = 0; var requiredRevision = 45;

/]]>/ </script> </head> <body>

El problema parece ser la colocación de la línea que carga AC_RunActiveContent.js. Cuando lo muevo por encima de las otras variables en mi escritura de la prueba se rompe la secuencia de comandos de prueba. ¿Hay alguna manera de forzar Yii para escribir los comandos en el orden los quiero?

ACTUALIZACIÓN 8/23 / 10- RESOLVER !!!

Con las sugerencias del gris de la lágrima que era capaz de conseguir este trabajo. Dado Luché con esto durante varios días, pensé que había puesto la solución completa para los demás.

En primer lugar, he instalado tablas XML / SWF en protected/vendors/Maani

show.php (vista que contiene la tabla)

<?php
$chartPath=Yii::getPathOfAlias('application.vendors.Maani.*');
$chartUrl=Yii::app()->getAssetManager()->publish($chartPath);

Yii::app()->clientScript->registerScript('AC_FL_RunContent', 'AC_FL_RunContent = 0;', CClientScript::POS_HEAD); Yii::app()->clientScript->registerScript('DetectFlashVer', 'DetectFlashVer = 0;', CClientScript::POS_HEAD); Yii::app()->clientScript->registerScript('Morestuff', ' var requiredMajorVersion = 10; var requiredMinorVersion = 0; var requiredRevision = 45; ', CClientScript::POS_HEAD); Yii::app()->getClientScript()->registerScriptFile($chartUrl.'/AC_RunActiveContent.js',CClientScript::POS_BEGIN); ?>

<?php $chart = "<chart><chart_type>bar</chart_type><chart_border color='FF0000' /></chart>"; ?>

<script language="JavaScript" type="text/javascript"> /<![CDATA[/ if (AC_FL_RunContent == 0 || DetectFlashVer == 0) { alert("This page requires AC_RunActiveContent.js."); } else { var hasRightVersion = DetectFlashVer(requiredMajorVersion, requiredMinorVersion, requiredRevision); if(hasRightVersion) { AC_FL_RunContent( 'codebase', 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,45,2', 'width', '400', 'height', '250', 'scale', 'noscale', 'salign', 'TL', 'bgcolor', '#777788', 'wmode', 'opaque', 'movie', 'charts', 'src', '<?php echo $chartUrl; ?>/charts', 'FlashVars', "library_path=<?php echo $chartUrl; ?>/charts_library&xml_data=<?php echo $chart; ?>", 'id', 'my_chart', 'name', 'my_chart', 'menu', 'true', 'allowFullScreen', 'true', 'allowScriptAccess','sameDomain', 'quality', 'high', 'align', 'middle', 'pluginspage', 'http://www.macromedia.com/go/getflashplayer', 'play', 'true', 'devicefont', 'false' ); } else { var alternateContent = 'This content requires the Adobe Flash Player. ' + '<u><a href=http://www.macromedia.com/go/getflash/>Get Flash</a></u>.'; document.write(alternateContent); } } /]]>/

Tenga en cuenta la información de la ruta relativa en src y se requiere FlashVars.

¿Fue útil?

Solución

Por lo que yo puedo decir, CClientScript mantiene el orden separada de bloques de script registrados a través de registerScript() y guiones registrados a través de registerScriptFile(). Pero siempre será hacer que registerScript() después registerScriptFile(). Hay 2 formas posibles para lograr su tarea:

  1. Poner a los bloques de script en CClientScript::POS_HEAD y de la escritura enlaces en CClientScript::POS_END.
  2. Heredar su propio gestor de script desde CClientScript.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top