Cgridview E Cbuttoncolumn: Come Settare Gli Attributi Data Usando I Valori Della Riga ?

Ho una CGridView. In questa devo farmi un pulsante personalizzato. Questo deve aprire una modal popolata con alcuni dei dati della riga a cui appartiene.

Vorrei usare gli attributi data perchè mi sembra pulita come soluzione, ma le ‘options’ della CButtonColumn non vengono valutati da Yii, perchè non è possibile usare ‘$data->qualcosa’ in quanto viene riportata testualmente…

come fare ?




'clone'	=> array (

			'icon'		=> 'copy',

			'label'		=> Yii::t('Newsletter', 'clone'),

			// 'url'		=> '#',

			'options'	=> array (

				'data-toggle'        => 'modal',

				'data-target'	     => '#cloneModal',

                                'data-newsletter-id' => '$data->id'

			),

		),

	),




io ho usato una soluzione molto sporca, leggendo gli attributi del collegamento e usando il preventDefault per evitare che partisse il link…

ho dovuto fare una sciocchezza anche io… ho letto dal parent.parent.find(’.id-cell’).text l’id della riga … che schifo, speriamo che questa situazione rientri in Yii 2, non è così insolito voler fare un pulsante che abbia le info prese dalla riga a cui appartiene …

Mmmm se personalizzi il bottone, puoi sempre disegnare li dentro la finestra modale. Hai totale controllo, da quel che mi ricordo, sul template che genera i bottoni.

basta mettere un bottone nelle colonne normali e non nella Columnbutton, cmq anche io quando ho avuto l’esigenza l’ho recuperato con jquery da un href.

Ipotesi scartata.

Ho 50 righe di risultati per pagina, non creo 50 volte lo stesso codice HTML, diverso solo per un id !

Inoltre anche io ‘ricordo’ del totale controllo, fatto sta che NON RIESCO PROPRIO a pasare uno straccio di id al mio CButton personalizzato, da qui la domanda in topic.

Devo scartare anche questa ipotesi per motivi estetici. In tutta l’app i comandi sono raggruppati assieme come mini-pulsantiera nella CButtonColumn, non separo un comando solo in una sola griglia.

Comunque questo sposta solo il problema una colonna più in là.

Come si fa in un CButton a passargli, in qualsivoglia maniera, l’id della riga ? Volevo passargli via htmlOptions degli attribuiti data-, ma qualcosa che non conosco fa si che questi non vengano generati, non compare nessun data- nel tag A…

In che senso non riesci? Hai tentato o non sai come fare?

Proprio nel senso che per quante strade ho tentato, nessuna ha dato esito positivo…

Sto mantendendo la soluzione del prendere l’id tramite jQuery, ma fa proprio schifo come soluzione, vorrei poter settare un data-* e poi leggerlo tramite $(this).data(‘qualcosa’)… sarebbe più pulito

io ho fatto così:




'buttons'=>array(

      'mybut' => array(

    	 'label'=>'My button',

	 'url'=>'$data->id',

	 'click'=>'js: function(){

    		 var_js = $(this).attr("href"); 

     		 open_modal();

     		 return false;

	 }',   

    	//buggata su firefox e altri browser.chrome ok.

        //'url'=> '"javascript:var_js=$data->id; open_modal();"',

        // da non usare

    	),    					

),