stranezza zii.widgets.CMenu

Salve stò adattando ‘graficamente’ un menu (CMenu) alle mie esigenze.

In sostanza nella view ‘view.php’ del mio model ho ripreso le righe:


$this->menu=array(

	array('label'=>'List Fisioterapista', 'url'=>array('index')),

	array('label'=>'Create Fisioterapista', 'url'=>array('create')),

	array('label'=>'Update Fisioterapista', 'url'=>array('update', 'id'=>$model->id)),

	array('label'=>'Delete Fisioterapista', 'url'=>'#', 'linkOptions'=>array('submit'=>array('delete','id'=>$model->id),'confirm'=>'Are you sure you want to delete this item?')),

	array('label'=>'Manage Fisioterapista', 'url'=>array('admin')),

);

questo passa l’array $menu al layout per poi essere utilizzato all’interno di zii.widget.CMenu

Non mi piaceva esteticamente e l’ho modificato direttamente ricreandomi un nuovo zii.widgets.CMenu così:


<?php

 $this->widget('zii.widgets.CMenu',array(

			'encodeLabel'=>false,

			'htmlOptions'=>array('class'=>'controls-tabs js-tabs same-height with-children-tip'),

			'activeCssClass'=>'',

			'items'=>array

			(

array('label'=>'<img src="'.Yii::app()->theme->baseUrl.'/images/icons/web-app/24/UsersList.png" width="24" height="24">','url'=>array('index'),'itemOptions'=>array('title'=>'Tutti')),

array('label'=>'<img src="'.Yii::app()->theme->baseUrl.'/images/icons/web-app/24/Add.png" width="24" height="24">', 'url'=>array('create'),'itemOptions'=>array('title'=>'Aggiungi')),

array('label'=>'<img src="'.Yii::app()->theme->baseUrl.'/images/icons/web-app/24/edit.png" width="24" height="24">', 'url'=>array('update','id'=>$model->id),'itemOptions'=>array('title'=>'Aggiorna')),

array('label'=>'<img src="'.Yii::app()->theme->baseUrl.'/images/icons/web-app/24/trash.png" width="24" height="24">', 'url'=>'#', 'linkOptions'=>array('submit'=>array('delete','id'=>$model->id),'confirm'=>'Are you sure you want to delete this item?'),'itemOptions'=>array('title'=>'Elimina')),      

array('label'=>'<img src="'.Yii::app()->theme->baseUrl.'/images/icons/web-app/24/lock.png" width="24" height="24">', 'url'=>array('admin'),'itemOptions'=>array('title'=>'Admin')),

)));

?>



Il problema è su questo Item:


array('label'=>'<img src="'.Yii::app()->theme->baseUrl.'/images/icons/web-app/24/trash.png" width="24" height="24">', 'url'=>'#', 'linkOptions'=>array('submit'=>array('delete','id'=>$model->id),'confirm'=>'Are you sure you want to delete this item?'),'itemOptions'=>array('title'=>'Elimina')),

… non vedo traccia di funzioni onSubmit() come dovrebbe, se esploro l’html con firebug ho un:


<li><a href="#"><img src="src_corretto" ...></a></li>

:blink: qualcuno capisce il perchè ? Tra l’altro non vedo nessun <form> a cui fare il submit !

thanks

L’unica differenza che noto è che nel secondo pezzo c’è un “,‘itemOptions’=>array(‘title’=>‘Elimina’)” in più. Che dia fastidio al linkOptions? Non so.

Beh no aggiunge un semplice title=“xxxx” all’href … cmq ho provato a modificare in


'linkOptions'=>array('onClick'=>'alert("Are you sure you want to delete this item?")')

e js viene eseguito… secondo me manca un <form> da submittare!! Non capisco a cosa faccia riferimento quel

array(‘label’=>’<img src="’.Yii::app()->theme->baseUrl.’/images/icons/web-app/24/trash.png" width=“24” height=“24”>’, ‘url’=>’#’, ‘linkOptions’=>array(‘submit’=>array(‘delete’,‘id’=>$model->id),‘confirm’=>‘Are you sure you want to delete this item?’),‘itemOptions’=>array(‘title’=>‘Elimina’)),

mai nessuno l’ha usato ? :mellow:

[SOLVED]

Allora mettiamo queste due righe per chi come me dovesse passare una buona oretta notturna a mettersi le mani nei capelli …

Perchè credo che possa capitare a qualche altro amico ed è giusto che gli faciliti la vita (notturna).

Avevo tra i tags <head></head> le mie brave inclusioni .js

tra cui una che scriveva così:




<head>

<!-- Modernizr for support detection, all javascript libs are moved right above </body> for better performance

<script src="<?php echo Yii::app()->theme->baseUrl; ?>/js/libs/modernizr.custom.min.js"></script> 

-->

</head>



ok penso, conflitto tra script ? Commentiamo stò pezzo di codice, che eliminarlo nn si sà mai nella vita può tornarmi utile… niente continua a non funzionare la funzione htmlOptions(SUBMIT…)

dopo aver scrutato le origini delle classi CMenu e realtivo CHtml::link() sono arrivato a scoprire la vera causa. Se rileggete bene il mio codice commentato c’è na parolina innocente:

che di innocente non ha nulla anzi !!! Praticamente Yii non lo considera un mero commento ma bensì un punto di ancoraggio a cui collegare i suoi script jQuery :blink:

Morale della favola, se avete delle paroline sensibili all’interno dei commenti (php // o <!–html–>) rimuoveteli!!!

Per la delete non hai bisogno di un form, ti basta un link del tipo index.php/r=controller/delete&id=qualchecosa con la particolarità che yii lo vuole di default via _POST (come scritto nei commenti). Questo lo possiamo fare via jquery.

Giusto, però volevo rimanere il più fedele alle funzionalità base di Yii, se inizio a scriptare jQuery son sicuro che prima o poi farò un’insalata! :)

Finchè posso delegare Yii lo faccio con piacere :P