Agregar Javascript a un View

Para agregar un archivo Javascript a un View utilizo el siguiente codigo:




<?php

	Yii::app()->clientScript->registerScriptFile(

		Yii::getPathOfAlias('application.components.js').'/general.js',

		CClientScript::POS_END

	);

?>



Con esto me surgen 2 problemas:

Al usar:


Yii::getPathOfAlias('application.components.js')

Este agrega el directorio raiz de mi aplicacion y el codigo que recibo del display es este:

[html]<script type="text/javascript" src="/Applications/MAMP/htdocs/project/protected/components/js/general.js"></script>

[/html]

Si cambio esa linea y agrego como segundo el parametro el path correcto y verdadero (cosa que asi no deberia ser), me dice que no tengo permiso a esa carpeta. El path completo que agrego seria


http:/localhost/project/protected/components/js/general.js

Accediendo al navegador con esa URL, tampoco funciona.

La solucion seria cambiar los permisos a la carpeta protected?

Gracias de Antemano

Una solución, que yo aplico e igual no es la buena, es hacer lo siguiente:

1.- Crear una carpeta fuera de protected que se llama js

2.- Copiar los js en esa carpeta

3.- Añadir el js en la vista:




<script type="text/javascript" src="<?php echo Yii::app()->request->baseUrl; ?>/js/comunes.js"></script>



Lo mismo hago con los css pero en la vista pongo:




<link rel="stylesheet" type="text/css" media="all" href="<?php echo Yii::app()->request->baseUrl; ?>/css/themes/stt/template.css" />



Saludos.

Tambien pense en esa solucion Sagitta, pero como dices, a mi parecer tampoco es correcta. Pero en cualquier caso, cuando me seria util la funcion Yii::app()->clientScript->registerScriptFile()? O existe alguna forma estandar en Yii de agregar un archivo javascript?

He leido sobre el Asset Manager, y si es que entendi bien, creo que te incluye el archivo para todo el proyecto, pero yo solo quiero un script especifico para una view especifico.

Saludos

La solución que te da Sagitta me parece correcta porque al fin de cuentas los js, css e imágenes deben quedar por fuera de protected/ ya que esta carpeta nunca debe estar desprotegida ya que aquí es donde se almacenan los controladores, modelos y demás contenido de vital importancia en cualquier aplicación… de manera que créeme que cambiar los permisos de la carpeta protected NO es una opción porque abrirías un hueco de seguridad tremendo.

En este caso que solo necesitas ese js para una sola vista está bien que lo hagas así como lo propone Sagitta porque la función "registerScriptFile()" se usa para que un mismo script no se vaya a incluir dos veces en la misma pantalla, esto podría darse por ejemplo en los widgets.