Joomla.it Forum
Non solo Joomla... => Sviluppo => : lory1990 04 Oct 2010, 23:06:21
-
Ciao a tutti ho scritto questo codice:
<form action="index.php?option=com_uni&controller=new&task=salva" method="post" name="adminForm">
....
<input type="submit" value="<?php echo JText::_('ADD_EXAMS') ?>"/>
</form>
solo che non reindirizza sulla funzione del controller che deve gestire il form.
postoi l controller:
class UniControllerNew extends JController
{
function display(){
JRequest::setVar('model', 'new' );
JRequest::setVar('view', 'new' );
parent::display();
}
function salva(){
echo "salvaaa";
}
function elimina(){
$model = $this->getModel('new');
if(!$model->elimina()){
$msg = JError::raiseWarning(100,JText::_('ELIMINAZIONE_FALLITA'));
} else{ $msg = JText::_("ELIMINATO");}
$this->setRedirect("index.php?option=com_uni",$msg);
}
}
come faccio?
-
come si chiama il controller?
M.
-
si chiama New
-
quindi hai più controller... come fai a switchare tra i controller?
M.
-
beh... in che senso..... cioè ho semplicemente richiamato una funzione e basta no??
posto il codice completo:
Controller:
defined( '_JEXEC' ) or die( JText::_('Accesso Negato') );
jimport('joomla.application.component.controller');
class UniControllerNew extends JController
{
function display(){
JRequest::setVar('model', 'new' );
JRequest::setVar('view', 'new' );
parent::display();
}
function salva(){
echo "salvaaa";
}
function elimina(){
$model = $this->getModel('new');
if(!$model->elimina()){
$msg = JError::raiseWarning(100,JText::_('ELIMINAZIONE_FALLITA'));
} else{ $msg = JText::_("ELIMINATO");}
$this->setRedirect("index.php?option=com_uni",$msg);
}
}
Template:
<?php defined( '_JEXEC' ) or die( JText::_('Accesso Negato') ); ?>
<?php if($this->id==0){?>
<h1><?php echo JText::_("PLS_LOGIN")?></h1>
<?php } else{?>
<form action="index.php?option=com_uni&controller=New&task=salva" method="post" name="adminForm">
<h1><?php echo JText::_("NEW_EXAM")?></h1>
<p><?php echo JText::_("DESC_EXAM")?></p>
<h2><?php echo JText::_("EXAMS")?></h2>
<?php
$a = count($this->materie); // 3 colonne
if ($a!=0){?>
<table width="100%">
<?php for($i=0;$i<$a;$i+=3){?>
<tr>
<td width="20px"><input type="checkbox" name="mat[]" value="<?php echo $this->materie[$i]->ID?>" /></td>
<td><?php echo $this->materie[$i]->nome?></td>
<td width="20px"><?php if($i+1<$a){?><input type="checkbox" name="mat[]" value="<?php echo $this->materie[$i+1]->ID; ?>" /><?php } ?></td><td><?php if($i+1<$a){ echo $this->materie[$i+1]->nome;}?></td>
<td width="20px"><?php if($i+2<$a){?><input type="checkbox" name="mat[]" value="<?php echo $this->materie[$i+2]->ID; ?>" /><?php } ?></td><td><?php if($i+1<$a){ echo $this->materie[$i+2]->nome;}?></td>
</tr>
<?php } ?>
</table>
<?php }
$b = count($this->pack);
if($b!=0){
?>
<h2><?php echo JText::_("PACKAGES")?></h2>
<table>
<?php for ($i=0;$i<$b;$i++){
$row = $this->pack[$i];
?>
<tr>
<td width="20px"><input type="checkbox" name="mat[]" value="<?php echo $row->Materie?>"/></td>
<td><?php echo $row->Nome;?></td>
<td><?php echo $this->valori[$i];?></td>
</tr>
<?php }?>
</table>
<?php }?>
<input type="hidden" name="option" value="com_uni" />
<input type="hidden" name="task" value="" />
<input type="hidden" name="boxchecked" value="0" />
<input type="hidden" name="controller" value="new" />
<p align="center"> <input type="submit" value="<?php echo JText::_('ADD_EXAMS') ?>"/></p>
</form>
<?php }?>
-
..o noncapisco qualcosa io... ma come fai ad infilarti in quel controller? dov'è che recuperi la var controller e fai l'execute della task?
M.
-
ok ok ok... mi sa che qualcosa non è chiaro a me invece.... anche se l'argomento di action è questo:
index.php?option=com_uni&controller=New&task=salva
ok allora non so coem fare da frontend a recuperare un controller e la relativa task... per favore puoi are un esempio?
-
Ok ok risolto: bastava mettere
action="<?php echo JRoute::_('index.php') ?>"
e poi
<button type="submit" class="submit" onclick="return submitbutton('salva')">
-
beh solitamente fa da switch il file con lo stesso nome del componente che trovi in root, se componente amministrativo va aggiunto admin.nome.php
anche del submit puoi farne a meno se nella view istanzi la JToolbar helper i cui bottoni fanno proprio qs onclick="return qualcosa
M.
-
ma era un frontend.... :)
-
meno la toolbar il discorso del controller è comunque valido
M.
ps
tutto può funzionare comunque ma così sembra tu abbia fatto un mvc un po 'short".
non riesci a gestire gli errori ne del form ne dell'sql, non riesci ad avere messaggi di ritorno
M.