2013-10-11 16 views
8

Qualcuno può spiegarmi come utilizzare un "blocco di visualizzazione" in CakePhP 2.0?Cake PhP Blocks - Come usarli?

Ho letto la documentazione sul sito di cakephp ma manca molto per l'utente inesperto ... ad es. di quali file ho bisogno dove, come si chiama un blocco all'interno del codice, il blocco di codice ha bisogno della propria cartella/controllore/modello/vista ecc.? Sono davvero perso!

Se qualcuno potesse spiegarlo dall'inizio alla fine su come utilizzare un blocco come barra laterale sarebbe fantastico.

L'esempio sarebbe che ho una barra laterale che voglio usare su pagine diverse ma voglio rompere la barra laterale in elementi diversi per chiamare all'interno del blocco, ad es.

<div class="heading1"> 
    <h2>Heading 1</h2> 
</div> 
<div class="ul-list1"> 
<ul> 
<li>list item 1</li> 
<li>list item 2</li> 
</ul> 
</div> 
<div class="heading2"> 
    <h2>Heading 2</h2> 
</div> 
<div class="ul-list1"> 
<ul> 
<li>list item 3</li> 
<li>list item 4</li> 
</ul> 
</div> 

Così rompere questo a due elementi (Titolo1 e la rubrica 2)

Come dovrei scrivere il codice per il blocco, dove dove inserisco questo codice e quali pagine ho bisogno? (per favore, rivolgiti a un utente di CakePhP come novizio, perché sono davvero confuso!)

+0

sto ancora bloccato su questo - ho davvero bisogno di questa segreteria, dal punto di vista di un novizio completo! quale codice scrivere, dove mettere quel codice, in quali pagine, come chiamarle? come usare gli elementi ecc ...? –

risposta

1

puoi usare il seguente codice nella tua vista o elementi.

// for start the block code 
$this->start('block_name'); 

// your html code will goes here, even you can also specify the element reference. 

$this->end(); // close the block. 

e nel layout, è possibile recuperare/visualizzare il codice della vista blocco come

echo $this->fetch('block_name'); // anywhere in the layout. 

assicurarsi che hai specificato lo stesso nome del blocco in vista e layout.

+0

Questo è il bit che non capisco. Se aggiungo l'HTML alla vista, voglio vederlo come dice la prima parte, allora qual è il punto nel blocco per recuperare i dati? Se uso il codice di blocco negli elementi, dove lo metto? potresti essere veramente specifico su cosa va dove e in quali cartelle ecc. perché sono ancora confuso? –

+0

Se è stato aggiunto il codice di blocco nell'elemento, è possibile aggiungere l'elemento all'interno di '$ this-> start ('block_name');' e '$ this-> end();' in vista. –

+0

Come faccio a "anche tu puoi specificare il riferimento all'elemento"? –

4

È necessario creare un elemento come segue.

// app/views/elements/headings.ctp 
<?php $this->start('heading1'); ?> 
<div class="heading1"> 
    <h2>Heading 1</h2> 
</div> 
<div class="ul-list1"> 
    <ul> 
     <li>list item 1</li> 
     <li>list item 2</li> 
    </ul> 
</div> 
<?php $this->end(); ?> 


<?php $this->start('heading2'); ?> 
<div class="heading2"> 
    <h2>Heading 2</h2> 
</div> 

<div class="ul-list1"> 
    <ul> 
     <li>list item 3</li> 
     <li>list item 4</li> 
    </ul> 
</div> 
<?php $this->end(); ?> 
// end element file 

// include the element first before getting block in the views or layout file. 
<?php 
    echo $this->element('headings'); 
?> 

// after that you will able to display block anywhere inside view files or layout also with following statements. 

<?php 
    // for heading first 
    echo $this->fetch('heading1'); 

    // for heading second. 
    echo $this->fetch('heading2'); 
?> 
+0

Ciao Robert, se hai ancora qualche problema sentiti libero di postare commenti. –

+0

Non riesco ancora a ottenere il vantaggio rispetto all'utilizzo di più elementi. Sono abbastanza sicuro che puoi fare cose incredibili con i blocchi, ma non riesco a pensare a qualcosa che non può essere fatto con elementi più facilmente e con meno linee di codice. – devius

0

nel layout o elemento quando si esegue:

 
    $this->fetch ("block_name"); 
Non importa quando si definisce il blocco o si ignora che ... ogni volta che in voi altri elementi si può fare $ this-> INIZIO ("block_name ") o entrambi i $ this-> append (" block_name ") ... cakephp si 'fondono' tutta l'operazione a quel blocco e metterli nel luogo appropriato (definito nel layout) ...

Un esempio di usare i blocchi ... immagina un blocco di css nell'intestazione del tuo layout e nel blocco javascript nel tuo footer ... così se ci sono specifici css o javascript per una specifica funzionalità, saranno aggiunti a quello blocco e non avrà lo script e CSS nel bel mezzo del codice HTML generato ...

Spero che ti aiutano a