Aggiungere Una Form Nella Home Di Testdrive.

Ciao a tutti…

come da titolo, ho bisogno di aggiungere una form alla home dell’esempio testdrive… non ho idea di come fare.

Ho creato il model per la form tramite gii e il file si chiama Newsletter.php, poi nel file main.php (view) ho inserito il codice per visualizzare la form.

Se nel SiteController.php creo una nuova action: actionNewsletter, non succede assolutamente nulla, il sistema mi dice che non ho definito la variabile $model… ma se metto $model = new Newsletter(); dentro all’action Index non mi si visualizza niente (il sito resta bianco).

Insomma non capisco come inserire una form nella home visto che la home non ha nessun model, ha una view in site/index.php e ha una action Index nel SiteController… come ci aggiungo una form nella pagina? Visto che anche questa ha bisogno di un model, di una view e di una action nel controller?

Spero di essermi spiegato.

Grazie mille a tutti…

Non ho mai realizzato testdrive, quindi non so esattamente di che cosa tu stia parlando. Però ho capito che tu non hai ben chiaro come funziona l’MVC di Yii. Per esempio non ho capito perché hai creato actionNewsletter quando vuoi mostrare un form nella home (e la home è in actionIndex).

Perché in realtà non so come fare… e continuo a pensare che la documentazione di Yii sia chiara zero… ma credo che sia un’idea solo mia… o magari sono io troppo stupido. Ma devo capire e continuerò a leggere.

Nel SiteController.php ho:




public function actionIndex()

    {

        // renders the view file 'protected/views/site/index.php'

        // using the default layout 'protected/views/layouts/main.php'

        $this->render('index');

    }



Ho creato il model Newsletter.php e se dentro all’actionIndex ci metto $model = new Newsletter(); poi non so cosa restituire… e se restituisco $this->render(‘index’, array(‘model’=>$model)); mi da Undefined variable: model.

Nella view index.php ho messo:


<div class="form">

    <?php

    $form = $this->beginWidget('CActiveForm', array(

        'id'=>'newsletter-form',

        'enableClientValidation'=>true,

        'clientOptions'=>array(

            'validateOnSubmit'=>true,

        ),

    ));


    ?>




    <div class="form_in">

        <div class="form_left">

            <div class="">

                <?php

                echo $form->labelEx($model, 'index');

                echo $form->textField($model, 'email');

                echo $form->error($model, 'email');

                ?>

            </div>

        </div>

    </div>

    <?php $this->endWidget(); ?>

</div>

Non è che per caso devo creare anche una view newsletter.php dove metterci il codice che ho messo qui sopra e poi richiamarla nel file index.php in qualche modo?

Comunque è vero, non capisco proprio come funziona yii.

Grazie dell’aiuto…

nel controllers/SiteController:




public function actionIndex()

	{

		$model = new Newsletter();

		

		$this->render('index',array('model'=>$model));

	}



nella views/site/index:




<?php

    $form = $this->beginWidget('CActiveForm', array(

        'id'=>'newsletter-form',

        'enableClientValidation'=>true,

        'clientOptions'=>array(

            'validateOnSubmit'=>true,

        ),

    ));


    ?>

    <div class="form_in">

        <div class="form_left">

            <div class="">

                <?php

                echo $form->labelEx($model, 'email');

                echo $form->textField($model, 'email');

                echo $form->error($model, 'email');

                ?>

            </div>

        </div>

    </div>

    <?php $this->endWidget(); ?>



Se vai a vedere i miei primi post, fidati, ci capivo meno di te. E’ solo questione di tempo. L’importante è partire.