[Risolto]Includere View In Un'altra View

salve ragazzi ho un nuovo problema,

voglio includere una view in un’altra view , ho provato cosi:


Yii::import('application.views.prefixarchivioPratiche._form_inizio');

ma niente non importa nulla.

e quindi ho provato a ricorere a php puro ovvero:


include(Yii::app()->basePath."\\view\prefixarchivioPratiche\_form_inizio.php");

ma mi da un warning :

include(C:\xampp\htdocs\progetto\protected\view\prefixarchivioPratiche\_form_inizio.php): failed to open stream: No such file or directory

Per includere una view dentro ad un’altra view, devi utilizzare renderPartial:


<?php $this->renderPartial('/controller/view'); ?>

Se il controller è lo stesso, puoi anche ometterlo. Se vuoi passare variabili, puoi comportarti esattamente come se stessi usando la render che puoi trovare dentro ad un normale controller.

Ciao sensorario il problema sta nel fatto che voglio passargli questo:




<div class="row">

		<?php echo $form->labelEx($model,'N_pratica'); ?>

		<?php echo $form->textField($model,'N_pratica',array('size'=>3,'maxlength'=>3,'value'=>$this->creaNPratica())); ?>

		<?php echo $form->error($model,'N_pratica'); ?>

	</div>


	<div class=\"row\">

		<?php echo $form->labelEx($model,'anno'); ?>

		<?php echo $form->textField($model,'anno',array('value'=>date('Y',time()),'onkeyup'=>'

                                                                if(jQuery(this).val().length==4){                                                                    

                                                                jQuery.ajax({

                                                                             type: "POST",

                                                                             url:"Calcolo_collocazione_ajax",

                                                                             data:{data:jQuery(this).val()}                        

                                                                           }).success(function( data ) {jQuery("#PrefixarchivioPratiche_collocazione").val( data ); })

                                                                }else{

                                                                         jQuery("#PrefixarchivioPratiche_collocazione").val("");

                                                                }')); ?>

		<?php echo $form->error($model,'anno'); ?>

         

	</div>


	<div class="row">

		<?php echo $form->labelEx($model,'del'); ?>

		<?php echo $form->textField($model,'del',array('value'=>date('d/m/Y',time()))); ?>

		<?php echo $form->error($model,'del'); ?>

	</div>

        

        <div class="row">

		<?php echo $form->labelEx($model,'collocazione'); ?>

		<?php echo $form->textField($model,'collocazione',array('size'=>50,'maxlength'=>50,'value'=>$this->calcolo_collocazione_php(date('Y',time())))); ?>

		<?php echo $form->error($model,'collocazione'); ?>

	</div>


	<div class="row">

		<?php echo $form->labelEx($model,'Firmana'); ?>

		<?php echo $form->textField($model,'Firmana',array('size'=>50,'maxlength'=>50)); ?>

		<?php echo $form->error($model,'Firmana'); ?>

	</div>


	<div class="row">

		<?php echo $form->labelEx($model,'nome'); ?>		

               <?php $this->widget('ext.combobox.EJuiComboBox', array(

                     'model' => $model_seu,

                     'attribute' => 'nome',

                     // data to populate the select. Must be an array.

                     'data' => PrefixfirmanaSeuController::Seu(),

                     // options passed to plugin

                     'options' => array(

                        // JS code to execute on 'select' event, the selected item is

                        // available through the 'item' variable.

                        'onSelect' => 'alert("selected value : " + item.value);',

                        // JS code to be executed on 'change' event, the input is available

                        // through the '$(this)' variable.

                        'onChange' => 'alert("changed value : " + $(this).val());',

                        // If false, field value must be present in the select.

                        // Defaults to true.

                        'allowText' => TRUE,

                    ),

                    // Options passed to the text input

                    'htmlOptions' => array('size' => 10),

                ));

               ?>

            <?php echo $form->error($model,'nome'); ?>

	</div>



quindi la view A dovrà avere questo codice in un determinato punto

Come diceva sensorario:

tu ti fai una view che si chiama ad esempio _viewdainserire all’interno della quale ci metti tutto il tuo codice.

Poi, all’interno della view che usi la richiami, ricordandoti di passargli tutte le variabili che servono:




<?php $this->renderPartial('/prefixarchivioPratiche/_form_inizio',array('form'=>$form, 'miavariabile1'=>$pincopalla, 'modeldapassare'=>$pallapinco)); ?>

e Yii pensa a tutto lui.

Non importa quanto incasinato sia il tuo annidamento di view, Yii è un bravo ragazzo e non sacramenta mai. ;)

ok grazie mille ragazzi ora funziona.

Non avevo bene compreso il metodo render e renderPartial.

grazie ancora

E’ meglio includere le view solo del proprio controller, se ti serve condividere una view fra diversi controllers fai un widget.

si si fortunatamente sono dello stesso controller :D