Cartella Protected Troppo Protetta

Sto utilizzando la libreria grafica RGraph per scrivere su canvas.

(incidentalmente: non la conoscevo, ma la trovo bellissima e ben

documentata… )

Se la includo in una cartella /vendor messa allo steso livello di /css o

/assets poi riesco a richiamarla, p.es:

<?php Yii::app()->clientScript->registerScriptFile("/Panels/p/vendor/rgraph/libraries/RGraph.common.core.js");?>

e tutto funziona.

Ma se la includo, come si dovrebe, spostando la cartella vendor in /protected

(quindi /protected/vendor) poi quando la chiamo mi becco un 403 Forbidden…

Evidentemente non ho capito qualcosa di fondamentale…

Esiste questa estenzione:

http://www.yiiframework.com/extension/rgraph/

risposta inutile, scusami … aiuta l’utente a capire il problema

E’ giusto che protected sia inaccessibile dal browser degli utenti.

Gli script vanno pubblicati come assets.

Per esempio




$js_file = dirname(__FILE__).DIRECTORY_SEPARATOR . 'js' .DIRECTORY_SEPARATOR. 'News.js';

$published_js = Yii::app()->assetManager->publish($js_file);

Yii::app()->clientScript->registerScriptFile( $published_js, CClientScript::POS_END);



Io ho un file news.js (per la precisione è di un mio widget, ma l’esempio calza al caso tuo, perchè anche la cartella extension non è raggiungibile dall’esterno)

Pubblico il file, quindi lo registro.

Al primo utente, yii copia il js tra gli assets (dalla volta successiva non lo fa più finchè il file non cambia)

E il browser ha il corretto <link> tag (usando POS_HEAD) oppure il tag <script> (usando POS_END) che punta al tuo js, ma dalla cartella degli assets.

Chiedo scusa per la risposta troppo frettolosa. Volevo solo indicare all’utente come utilizzare la libreria richiesta. Ho già utilizzato l’estenzione indicata e devo dire che funziona abbastanza bene. Ti ringrazio anche per l’utile spiegazione.

Grazie realtebo, è proprio la risposta che cercavo!

Mi mancava il concetto di pubblicare gli script come asset,

dalla documentazione non ero riuscito a chiarirmi le idee…

Ma volevo tenere la libreria sotto protected perchè sono ben d’ accordo

che, come tu hai scritto:

> E’ giusto che protected sia inaccessibile dal browser degli utenti.

Il tuo esempio era chiarissimo.

Grazie Lerstat1968 per la segnalazione. In effetti avevo visto quella

estensione ma ho preferito utilizzare direttamente la libreria originale

che sotto Yii funziona benissimo senza alcun problema.

Potrei sbagliarmi, ma se la libreria funziona bene da sola, perchè dovrei

usare l’ estensione? Se c’è un motivo mi sfugge…

Ovviamente se hai un altro punto di vista sono interessato a conoscerlo.

grazie comunque, ciao.