Non mi pare di averti chiesto di scrivermi del codice. Piuttosto ho chiesto di darmi qualche dritta su come procedere per un’estensione che vorrei perfezionare per metterla a disposizione della community e non per un uso mio personale.
Le soluzioni che stavo considerando (ma su cui sto avendo problemi) sono 2 (espongo soluzioni e problemi riscontrati)
Soluzione 1 (suggerita dall’utente Argent)
- Sposto il widget in un nuovo file
#protected/extensions/ya-simple-feed/_feed.php
<div id="feed">
<div id="feed_widget">
<?php
$this->widget(
'ext. ya-simple-feed.YaSimpleFeed',
array(
'feedUrl'=>'http://rss.cnn.com/rss/cnn_topstories.rss',
// feedSpeed must be an INT (OPTIONAL, by default is 5)
'feedSpeed'=>7,
// feedDirection must be a string as 'left','right,'up' or 'down' (OPTIONAL, by default is 'left')
'feedDirection'=>'up',
)
);
?>
</div>
</div>
<?php
Yii::app()->clientScript->registerCoreScript('jquery');
Yii::app()->clientScript->registerScript('feed-updater', '
function updater() {
$("#feed").load("'.$this->createUrl('ajaxfeed').' #feed_widget", function(){
setTimeout(updater, 2000);
});
}
setTimeout(updater, 2000);
');
- aggiungo l’action actionAjaxFeed al controller:
##protected/extensions/ya-simple-feed/YaSimpleFeedController.php
class YaSimpleFeedController extends CExtController
{
public function accessRules()
{
return array(
array('allow',
'actions' => array('ajaxFeed'),
'users' => array('*'),
)
);
}
public function actionAjaxFeed()
{
$this->renderPartial("_feed");
- aggiungo questa istruzione nel punto in cui voglio far apparire l’estensione
$this->renderPartial("_feed");
In questo caso il problema è che, essendo nella directory /views/layouts non riesco a richiamare correttamente il widget usando questo percorso
$this->renderPartial(Yii::app()->request->baseUrl."/protected/extensions/ya-simple-feed/_feed");
Soluzione 2
Utilizzo questo codice per far aggiornare, ad esempio, la div con id footer
Yii::app()->clientScript->registerScript('autoupdate-footer',
"setInterval(function(){;$.fn.yiiGridView.update('footer', {
data: $(this).serialize()
});
return false;},3000);"
);
e l’errore riscontrato è
.
Malgrado io abbia cercato questo errore con google non sono riuscito a venirne a capo.