Yii Framework Forum: Modulo o widget?! - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Modulo o widget?! Rate Topic: -----

#1 User is offline   Attilio 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 98
  • Joined: 10-May 11
  • Location:Bari, Italy and Guatemala, Guatemala

Posted 01 June 2011 - 08:58 PM

Ciao a tutti!
Ho un po' di confusione relativamente alle differenze tra widget e module.
Ho creato un widget attorno a un flash che scatta foto con la webcam (il codice originale è http://code.google.com/p/jpegcam/ ; l'intenzione è impacchettare una extension e pubblicarla). Come potete immaginare il flash chiama un'url per salvare il jpg, una specie di ajax insomma, e attualmente c'è un controller+action che fa il lavoro, però il controller è quello relativo alla view che include il widget.

Volendo impacchettare il tutto come una extension, dovrei fare un module o un widget? A me sembra più sensato il module, perchè mi permetterebbe di includere anche il relativo controller e action per il salvataggio della foto, ma in tal caso come farei a renderizzare la webcam in una view esterna al modulo? Insomma la stessa funzionalità dovrebbe essere disponibile in qualsiasi controller (User, Profile, MySuperPhotoGallery..)
Extension yii-jpegcam: embed a webcam and take photos
0

#2 User is offline   zaccaria 

  • Elite Member
  • PipPipPipPipPip
  • Yii
  • Group: Members
  • Posts: 2,232
  • Joined: 04-October 09
  • Location:Moscow

Posted 02 June 2011 - 01:05 AM

La soluzione e' di fare una action apposta, che poi includerai nel controller.

Crea una classe che estende CAction, e implementa il metodo run.

Nel controller puoi includere l'action cosi':

	public function actions() {
		return array(
			// главная
			'flashLoad' => array(
				'class' => 'application.extension.flaskLoader.loadAction',
			),
		);
	}


E' lo stesso lavoro che puoi osservare nel siteController per CCacptchaAction.
0

#3 User is offline   Attilio 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 98
  • Joined: 10-May 11
  • Location:Bari, Italy and Guatemala, Guatemala

Posted 02 June 2011 - 05:49 PM

Ok, grazie mille Zaccaria! ci sono quasi.. ho seguito How to use a widget as an action provider e sono riuscito ad agganciare il controller del client code alla CAction del widget (in altre parole sono riuscito a riprodurre il risultato del tutorial)

Ora si tratta di passare un parametro alla CAction, nello specifico devo dirgli dove salvare la foto scattata.

Un primo esperimento semi-riuscito è chiamare la action così: //localhost/miosito/miocontroller/jpegcam.saveJpg?id=27

ed effettivamente nella CAction riesco a catturare l'id così:
class saveJpg extends CAction{    
    public function run($id=null){
        echo $id;
    }
}


Ma non è quello che mi serve: non posso passare il full_path dell'immagine da salvare nell'url.. ve l'immaginate che belle url injections si potrebbero fare?

L'url deve rimanere come quella indicata sopra, nel controller Miocontroller devo poter decidere dove salvare e poi passare il nome del file alla CAction. (è anche da escludere che la costruzione del full_path si faccia nella CAction perchè è un widget che si deve poter riutilizzare in ogni applicazione)

Ho letto http://www.yiiframew...dpost__p__97673 , che sembra rifarsi a http://www.yiiframew...th-caction/#hh4 ma non mi funziona :( .
Extension yii-jpegcam: embed a webcam and take photos
0

#4 User is offline   zaccaria 

  • Elite Member
  • PipPipPipPipPip
  • Yii
  • Group: Members
  • Posts: 2,232
  • Joined: 04-October 09
  • Location:Moscow

Posted 03 June 2011 - 12:53 AM

Ma l'id che gli passi che cos'e'? Il model a cui e' associata l'immagine?

Se e' il model, allora e' fatta: carica il model e crea un metodo nel model per generare il full_path a partire dall'id.

In sostanza, deve essere il model a sapere dove salvare le immagini, non l'action che le salva.
0

#5 User is offline   Attilio 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 98
  • Joined: 10-May 11
  • Location:Bari, Italy and Guatemala, Guatemala

Posted 05 June 2011 - 09:43 PM

Ok, risolto il problema senza coinvolgere il modulo. Vedi il commento in "Code reuse with CAction"

Dal controller alla CAction i parametri si passano così:

    public function actions()
    {
        return array(
            'providerName.'=>array(
                'class'=>'path.to.ProviderClass',
                'action1'=>array(
                    'property1'=>'value1',
                ),
                'action2'=>array(
                    'property2'=>'value2',
                ),
            ),
        )
    }


dove 'property1' e 'property2' sono public properties della CAction.
Extension yii-jpegcam: embed a webcam and take photos
0

#6 User is offline   Attilio 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 98
  • Joined: 10-May 11
  • Location:Bari, Italy and Guatemala, Guatemala

Posted 10 June 2011 - 12:36 PM

Fatto! come promesso (qui) l'extension è pronta!

yii-jpegcam
Yii extension to embed a webcam and take photos
Extension yii-jpegcam: embed a webcam and take photos
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users