Yii Framework Forum: Tabellarische Eingabe Seitenweise - Yii Framework Forum

Jump to content

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

Tabellarische Eingabe Seitenweise Rate Topic: -----

#1 User is offline   reburg 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 89
  • Joined: 15-January 13

Posted 20 January 2013 - 06:37 PM

Hallo,
Ich habe mit Hilfe der Extension MultiModelForm eine Seite gemacht, in der alle Datensätze einer Tabelle zeilenweise angezeigt werden (tabellarische Eingabe). Da es viele Datensätze sind, sollten sie auf mehrere Seiten aufgeteilt werden, wie bei dem Widget CGridView.

Wie kann ich diese Pagination in das Formular einbauen?
Bin Yii Anfänger. Bitte um Nachsicht.

Das ist der Code im Controller:

public function actionTabularInput() {
    Yii::import('ext.multimodelform.MultiModelForm');

    $model = new Member();
    $model->setisNewRecord(false);
    $validatedMembers = array(); 

    if(isset($_POST['Member']))
    {
        $model->attributes=$_POST['Member'];
        MultiModelForm::save($model,$validatedMembers,$deleteMembers);
    }

    $this->render('tabularInput',array(
        'model'=>$model,
        'validatedMembers' => $validatedMembers,
    ));
}


Das ist meine _tabularInputForm.php, welche von tabularinput.php gerendert wird:

<div class="form wide">
 
<?php $form=$this->beginWidget('CActiveForm', array(
        'id'=>'group-form',
        'enableAjaxValidation'=>false,
)); ?>
 
<p class="note">Fields with <span class="required">*</span> are required.</p>
 
<?php
echo $form->errorSummary(array_merge(array($model),$validatedMembers));
$memberFormConfig = array(
      'elements'=>array(
        'firstname'=>array(
            'type'=>'text',
            'maxlength'=>40,
      ),
      'lastname'=>array(
            'type'=>'text',
            'maxlength'=>40,
      ),
      'groupid'=>array(
            'type'=>'text',
            'maxlength'=>5,
       ),
       'membersince'=>array(
            'type'=>'dropdownlist',
            //it is important to add an empty item because of new records
            'items'=>array(''=>'-',2009=>2009,2010=>2010,2011=>2011,),
       ),
));
 
$this->widget('ext.multimodelform.MultiModelForm',array(
        'id' => 'id_member', //the unique widget id
        'formConfig' => $memberFormConfig, //the form configuration array
        'model' => $model, //instance of the form model
        'tableView' => true,

        //if submitted not empty from the controller,
        //the form will be rendered with validation errors
        'validatedItems' => $validatedMembers,

        //array of member instances loaded from db
        'data' => $model->findAll(array('order'=>'groupid ASC')),

//      'data'=> new CActiveDataProvider($model, array(
//           'pagination' => array('pageSize' => 5,),
//           'criteria'=>array('order'=>'groupid ASC',),
//      )),

));
?>
 
<div class="row buttons">
    <?php echo CHtml::submitButton($model->isNewRecord ? 'Create' : 'Save'); ?>
</div>
 
<?php $this->endWidget(); ?>
 
</div>


Unten sieht man auskommentiert meinen vergeblichen Versuch mit der Pagination.

Danke im Voraus für jeden Tipp.
Ferdinand
Greetings from Austria
Ferdinand
0

#2 User is offline   kokomo 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 289
  • Joined: 23-July 10

Posted 21 January 2013 - 09:04 AM

Hallo,
schaut für mich so aus, als hättest du in deinem Code die Array's falsch verschachtelt. Das pagination Array gehört nicht in das erste criteria Array sondern auf der "gleichen Ebene" wie dieses danach eingefügt.

'data'=> new CActiveDataProvider($model, array(
  	'criteria'=>array(
		'order'=>'groupid ASC',
	),
	'pagination' => array(
		'pageSize' => 5,
      ),
));

Wenns nicht funktioniert poste mal bitte die Fehlermeldung...

Edit: Seh gerade das meine Version identisch mit deiner ist Posted Image

Aus MultiFormModel.php Zeile 39 - 45 der Extension
/**
* Array of models loaded from db.
* Created for example by $model->findAll();
*
* @var CModel $data
*/
 public $data;


Wie man sieht wird CModel für $data erwartet und nicht eine DataProvider Klasse wie z.B. CActiveDataProvider.
0

#3 User is offline   kokomo 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 289
  • Joined: 23-July 10

Posted 21 January 2013 - 09:24 AM

P.S.: Daraus schließe ich, das Pagination in dieser Extension nicht unterstützt wird.
0

#4 User is offline   reburg 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 89
  • Joined: 15-January 13

Posted 27 January 2013 - 06:47 AM

View Postkokomo, on 21 January 2013 - 09:24 AM, said:

P.S.: Daraus schließe ich, das Pagination in dieser Extension nicht unterstützt wird.


Die seitenweise Anzeige (pagination) ist mir jetzt doch gelungen mit folgendem Code, den ich in das Formular eingebaut habe:

    ...

    $criteria = $model->search()->criteria;
    $count=$model->count($criteria);

    $pages=new CPagination($count);
    $pages->pageSize=10;
    $pages->applyLimit($criteria);

    $this->widget('ext.multimodelform.MultiModelForm',array(
       ...
    $this->endWidget(); ?>
 
    ...

<?php $this->widget('CLinkPager', array(
    'pages' => $pages,
)); ?>


Ich verstehe es zwar nicht ganz, aber es funktioniert.
Vor allem kapiere ich den Unterschied zwischen dataProvider und $model->findAll() nicht
Greetings from Austria
Ferdinand
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