2013-05-03 28 views
5

Sono solo un nuovo CakePhp, mi chiedo come chiamare una vista in un'altra vista.Come chiamare la vista in un'altra vista usando cakephp

Quando ho iniziato a eseguire CakePhp, il layout predefinito si trova in view/layouts/default.ctp.

In default.ctp ho chiamato un nome di vista homeview (vista/case/homeview.ctp).

Ecco il mio codice:

<?php 
    echo $this->fetch('homeview'); // this statement here is work 
?> 

E nel homeview.ctp ho chiamato un'altra vista con nome displayphone (vista/case/displayphone.ctp) homeview.ctp

<?php $this->start('homeview'); ?> 
    <h1> This is home view </h1> 
    <?php echo $this->fetch('displayphone'); // this statement does not work; ?> 
<?php $this->end(); ?> 

displayphone.ctp

<?php $this->start('displayphone');?> 
    <h1> This page display phone </h1> 
<?php $this->end(); ?> 

Perché non posso chiamare displayphone blocco homeview?

risposta

8

Come lei ha ricordato,

$this->fetch('homeview'); 

ha creato un blocco per nome homeview, consultare questo http://book.cakephp.org/2.0/en/views.html

Per quanto riguarda chiamando un'altra vista all'interno della vista non è possibile se non si crea un elemento per questo. L'elemento è l'insieme comune di HTML che può essere utilizzato in qualsiasi file di visualizzazione attraverso il progetto. allo scopo sopra creare un elemento per nome "displayphone.ctp" nella cartella Elemento vista interna e poi chiamarlo come

$this->element('displayphone'); 

Spero che questo risolverà il vostro scopo.

+0

Grazie si sta lavorando ora. –

+0

Come includere 'ctp'? Sia 'homeview' che' displayphone' sono la stessa directory. non ho bisogno di eventuali cambiamenti sul posto. Non voglio creare un 'elemento' – Chinmay235

0

Per questo è necessario creare l'elemento che è possibile includere in qualsiasi file di visualizzazione.

2

Sì, è possibile chiamare una vista all'interno di un'altra vista (Non va bene ma è possibile farlo).

Per esempio si hanno vista 2 vista Vista/Users/login.ctp Vista/Users/register.ctp

e si desidera chiamare registrare vista all'interno vista di login.

// File login.ctp 
$this->Element('../Users/register.ctp'); // ('..' . DS . 'Users' . DS . 'register.ctp') 

Questo otterrà la vista del registro come elemento e funzionerà correttamente.

0

Per CakePHP 3, utilizzare questo

<?= $this->requestAction('/Users/register') ?> 
Problemi correlati