Hallo,
ich habe nun versucht, eine tabellarische Eingabe - so wie in der Dokumentation beschrieben - zu implementieren, was mir irgendwie gelungen ist.
Nun habe ich auch ein Suchformular hinzugefügt. Dieses will aber nicht funktionieren.
Ich hatte das ganze auch schon probiert mit der Extension Multimodelform. Da funktioniert zwar die Suche mit dem Suchformular aber wenn man das Suchergebnis mehr als eine Seite braucht, dann wird nach Klick auf den Pager wieder alles angezeigt. Funktioniert also auch nicht richtig.
Trotzdem interessiert mich, warum es hier nicht geht. Leider verstehe ich nicht, wie eigentlich eine Suche von Yii abgewickelt wird. Es gibt ja keine eigene Action "search" im Controller. Die Methode "search" im Model wird wohl irgendwie aufgerufen aber wie und wo … ?
Hier ist der Code der Action im Controller, welche die Seite mit dem Formular für die tabellarische Eingabe anzeigt. Die Auswertung der Suche habe ich hier irgendwie versucht, aber es werden immer alle Datensätze angezeigt.
public function actionBatchUpdate()
{
$model=new Noten();
$criteria = new CDbCriteria();
$dataProvider = $model->search();
$criteria = $dataProvider->criteria;
$count=$model->count($criteria); echo $count;
$pages=new CPagination($count);
$pages->pageSize=6;
$pages->applyLimit($criteria);
$items = $model->findAll($criteria);
if(isset($_POST['Noten'])) {
$valid=true;
foreach($items as $i=>$item)
{
if(isset($_POST['Noten'][$i]))
$item->attributes=$_POST['Noten'][$i];
$valid=$item->validate() && $valid;
}
}
$this->render('batchUpdate', array(
'model' => $model,
'items' => $items,
'pages' => $pages,
));
}
Das ist der Code des aufgerufenen Formulars. Die Pagination funktioniert. Das Suchformular wird auch angezeigt. Ich kann Suchbegriffe eingeben. Aber nach Klick auf "search" erscheinen immer alle Datensätze. Die Suche funktioniert also nicht.
Yii::app()->clientScript->registerScript('search', "
$('.search-button').click(function(){
$('.search-form').toggle();
return false;
});
");
echo CHtml::link('Daten suchen','#',array('class'=>'search-button')); ?>
<div class="search-form" style="display:none">
<?php $this->renderPartial('_search',array('model'=>$model,));?>
</div><!-- search-form -->
<div class="form">
<?php $form=$this->beginWidget('CActiveForm', array(
'id'=>'noten-multiform',
'enableAjaxValidation'=>false,
)); ?>
<table>
<tr>
<th>Komponist</th><th>Werk / Besetzung</th><th>Verlag / Nr</th><th>Reihe</th><th>Anmerkung</th></tr>
<?php foreach($items as $i=>$item): ?>
<tr>
...
<td><?php echo $form->textField($item,"[$i]Werk"); ?><br>
<?php echo $form->textField($item,"[$i]Besetzung"); ?></td>
...
</tr>
<?php endforeach; ?>
</table>
<div class="row buttons">
<?php echo CHtml::submitButton('Save'); ?>
</div>
<?php $this->endWidget(); ?>
</div>
<?php $this->widget('CLinkPager', array(
'pages' => $pages,
)); ?>