#cakephp
Sommario
Di 1
Osservazioni 2
Versioni 2
Examples 2
Installazione o configurazione 2
Requisiti 2
Installa compositore 4
Requisiti 6
Examples 9
Osservazioni 11
Examples 11
Examples 12
Titoli di coda 20
Di
You can share this PDF with anyone you feel could benefit from it, downloaded the latest version
from: cakephp
It is an unofficial and free cakephp ebook created for educational purposes. All the content is
extracted from Stack Overflow Documentation, which is written by many hardworking individuals at
Stack Overflow. It is neither affiliated with Stack Overflow nor official cakephp.
The content is released under Creative Commons BY-SA, and the list of contributors to each
chapter are provided in the credits section at the end of this book. Images may be copyright of
their respective owners unless otherwise specified. All trademarks and registered trademarks are
the property of their respective company owners.
Use the content presented in this book at your own risk; it is not guaranteed to be correct nor
accurate, please send your feedback and corrections to info@zzzprojects.com
https://riptutorial.com/it/home 1
Capitolo 1: Iniziare con cakephp
Osservazioni
Questa sezione fornisce una panoramica di cosa sia CakePPp e perché uno sviluppatore
potrebbe volerlo utilizzare.
Versioni
1.2.0 2008-12-26
1.3.0 2010-04-25
2.0.0 2011-10-17
3.0.0 2015/03/22
Examples
Installazione o configurazione
Requisiti
La seguente guida di installazione è per cakephp 2.8 e versioni successive. Tutte le versioni di
cakephp inferiori a 2.8 non sono compatibili con php 7
Server HTTP. Ad esempio: Apache. Avere mod_rewrite è preferito, ma in nessun modo richiesto.
https://riptutorial.com/it/home 2
incollarli nella directory bin di apache C: \ wamp \ bin \ apache \ apache {version} \ bin.
Quindi riavviare tutti i servizi e dovrebbe essere OK.
Sebbene non sia richiesto un motore di database, immaginiamo che la maggior parte delle
applicazioni ne utilizzi uno. CakePHP supporta una varietà di motori di archiviazione di database:
Dopo aver scaricato, questi sono i file e le cartelle che dovresti vedere:
Assicurati che le cartelle tmp e logs esistano e siano scrivibili, altrimenti le prestazioni
della tua applicazione saranno seriamente compromesse. In modalità di debug,
CakePHP ti avviserà, se non è il caso.
La cartella della console contiene i comandi della console e le attività della console per
l'applicazione. Per ulteriori informazioni, vedi Gusci, Attività e Strumenti console.
https://riptutorial.com/it/home 3
La cartella del modello contiene le tabelle, le entità e i comportamenti dell'applicazione.
Visualizza : le classi di presentazione vengono posizionate qui: celle, helper e file modello.
Modello : i file di presentazione vengono posizionati qui: elementi, pagine di errore, layout e file
modello di visualizzazione.
Installa compositore
Apri una finestra della console e vai alla tua installazione di php (su Windows con l'installazione
xampp predefinita questa è C:\xampp\php )
Prima della cottura è necessario configurare la connessione del database. Per fare ciò è
necessario modificare il file config/app.php nel progetto.
'Datasources' => [
'default' => [
'className' => 'Cake\Database\Connection',
'driver' => 'Cake\Database\Driver\Mysql',
'persistent' => false,
'host' => 'localhost',
'username' => 'my_app', //in basic xampp: root
'password' => 'sekret', //in basic xampp: ''
'database' => 'my_app', //name of the database you want to connect to your project
'encoding' => 'utf8',
'timezone' => 'UTC',
'cacheMetadata' => true,
]
https://riptutorial.com/it/home 4
],
Se il tuo database è collegato correttamente, inserisci bin/cake bake nella cartella root del tuo
progetto in una finestra della console.
- all
- behavior
- cell
- component
- controller
- fixture
- form
- helper
- mailer
- migration
- migration_snapshot
- model
- plugin
- shell
- shell-helper
- template
- test
By using `cake bake [name]` you can invoke a specific bake task.
Per semplicità utilizzeremo tutto con le impostazioni predefinite. Per fare questo si entra
https://riptutorial.com/it/home 5
Eseguendo il cake bake all <modelNameYouWantToBake> il modello, la tabella, il controller,
l'apparecchiatura e i file di visualizzazione. Esegui questo per ogni possibile nome di modello e hai
un progetto funzionante con opzioni CRUD di base.
Ora puoi aprire il tuo browser e vedere come appare e iniziare ad estendere il progetto secondo la
tua logica
Requisiti
1-HTTP Server. For example: Apache. Having mod_rewrite is preferred, but by no means required.
2-PHP 5.5.9 or greater (including PHP 7)
3-mbstring PHP extens ion
4-intl PHP extension
Di solito faccio un'installazione di apache e mysql su una linuxbox. Posso anche usare Windows,
ma non lo consiglio;) Quindi, di solito faccio una nuova entrata nel file / etc / hosts per rendere un
sitename disponibile a cakephp.
prossimo passaggio per copiare tutti i file cakephp in una sottodirectory all'interno di / home /
myusername / public_html / caketest
app
cake
index.php
plugins
README
vendors
.htaccess
<Directory "/home/myusername/public_html/caketest">
Options Indexes MultiViews FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
riavviare apache. è inoltre necessario modificare i file .htaccess e posizionare una direttiva
RewriteBase con hte path nella directory effettiva, ad es.
RewriteBase /~myusername/caketest
https://riptutorial.com/it/home 6
creare un database, impostare la connessione db nei file di configurazione della torta e basta. puoi
puntare il tuo browser su http: //caketest.local se non vuoi che un url del sito di test tu possa
saltare gli host, e apache creazione di vhost, ma l'url da usare dovrebbe essere http: / localhost / ~
nomeutente / caketest
un'altra cosa importante è abilitare userdir modul in apache, e anche controllare se l'uso di php è
abilitato anche in userdirs.
Parlerà della struttura delle directory di CakePHP, cosa significa ogni cartella.
Per modificare il codice lib, è consigliabile estenderli nella nostra cartella app ed
eseguire le modifiche.
La cartella dei plugin e dei fornitori è condivisa da tutte le applicazioni ospitate nella
stessa directory.
https://riptutorial.com/it/home 7
Ora dovremmo passare alla nostra cartella dell'app
Leggi Iniziare con cakephp online: https://riptutorial.com/it/cakephp/topic/958/iniziare-con-cakephp
https://riptutorial.com/it/home 8
Capitolo 2: Gestione delle richieste Ajax
Examples
Esempio CakePHP 2.x di base
<script>
$.ajax({
type: 'POST',
url: '/yourController/ajaxCall',
success: function (result) {
// result is a JSON array of the returned Variables
},
error: function (result){
console.log(result);
}
});
</script>
Un altro modo di usare ajax in cakephp. Cakephp si fornisce per una richiesta giusta. Si prega di
vedere l'esempio.
https://riptutorial.com/it/home 9
'dataExpression'=>true,
'method' => 'POST' // method get or post
)
)
);
https://riptutorial.com/it/home 10
Capitolo 3: Istanziazione di modelli da
un'altra origine dati
Osservazioni
Arriverà un momento in cui la tua applicazione CakePHP avrà bisogno di interrogare più di un
database. Il metodo per richiedere i modelli da database non predefiniti non è presente nella
documentazione ufficiale.
Examples
Instantiating usa App :: uses
App::uses('YourModel', 'Model');
$model_1 = new YourModel(array('ds' => 'default'));
$model_2 = new YourModel(array('ds' => 'database2'));
Per più database, hai il file database.php in cui puoi impostare tutti i database che ti servono.
Ad esempio, se si dispone di due database, è possibile definirli nel file database.php come
"predefinito" e "sandbox", ad esempio.
La sandbox è il nome della configurazione e il nome effettivo del database viene scritto una sola
volta nel file database.php.
https://riptutorial.com/it/home 11
Capitolo 4: Suggerimenti per la codifica di
CakePHP3
Examples
Creazione di un nuovo controller
namespace App\Controller;
Il metodo beforeFilter () viene eseguito prima dell'esecuzione di qualsiasi altro metodo nel
controller.
Prima usa lo spazio dei nomi Event prima di definire la classe nel tuo file controller.
use Cake\Event\Event;
$this->set('color', 'pink');
$this->set('color', $color);
https://riptutorial.com/it/home 12
Passare più variabili per visualizzare insieme tramite la funzione compact ()
$color1 = 'pink';
$color2 = 'red';
$this->set(compact('color1', 'color2'));
$post_data= $this->request->data;
$this->request->data['field'];
$this->request->data('key_name');
$this->request->data('data.subfield');
la differenza tra la notazione dell'array e il metodo data() è che data() è sicura da errori e
restituisce null se la chiave non esiste nell'array
tu puoi fare
if($this->request->data('field')) { ...}
$this->request->getData();
$this->request->getData('key');
per impostare i dati disponibili per la funzione getData devi fare qualcosa del tipo:
https://riptutorial.com/it/home 13
$this->request = $this->request->withData('some_key_on_the_fly', 'value');
$some_key_on_the_fly = $this->request->getData('some_key_on_the_fly');
utile per l'aggiornamento dei modelli nel controller con dati statici
Di default CakePHP carica il modello correlato nel controller. Per caricare un altro modello nel
controller, utilizzare il metodo loadModel ():
$this->loadModel('Articles');
o caricare al volo
$table = TableRegistry::get('Articles');
$table->find();
return $this->redirect([
'controller' => 'myController',
'action' => 'myAction'
]);
return $this->redirect($this->referer());
return $this->redirect("http://stackoverflow.com/users/1793428/haresh-vidja");
return $this->redirect([
'controller' => 'users',
'action' => 'profile',
$id
]);
L'URL dovrebbe essere simile a questo http: // tuo_app_url / utenti / profilo / {id}
https://riptutorial.com/it/home 14
class UsersController extends Controller {
public function profile($id=null) {
$userData=$this->Users->get($id);
}
}
return $this->redirect([
'controller' => 'users',
'action' => 'profile',
'?'=>['id'=>$id]
]);
L'URL dovrebbe essere simile a questo http: // your_app_url / users / profile /? Id = {id}
Imposta il layout predefinito per l'intera applicazione . cioè, creato il file di layout in
/src/Template/Layout/admin.ctp
https://riptutorial.com/it/home 15
Cambia layout per controller specifico . per esempio, hai bisogno di un layout diverso per tutti i
metodi del controller specifico
Generalmente nella richiesta AJAX non è necessario caricare CSS, JS. Anche omettendo altro
codice HTML.
<?php
$this->fetch('content');
}
else
{
$this->viewBuilder()->layout('admin'); // For Version >= 3.1 or
$this->layout = 'admin'; // for version < 3.1
}
https://riptutorial.com/it/home 16
2. Usando il metodo loadComponent () nel metodo initialize () di Controller.
Way-2 Utilizzare in questo modo quando è necessario caricare il componente in modo dinamico
per controller specifici. Carica un componente
Come una struttura di codice, sembra uguale al metodo beforeFilter (). ma ci sono molte
differenze tra beforeFilter () e initialize ().
1. initialize () viene sempre chiamato dopo la chiamata del costruttore. ma beforeFilter () non
sta chiamando in caso di metodo di azione non trovato in particolare controller.
2. Il metodo initialize () viene generalmente utilizzato per inizializzare qualcosa come
aggiungere nuovi componenti e helper. ma in beforeFilter () viene generalmente utilizzato
per eseguire parte logica globale.
$post_data= $this->request->query;
$this->request->query['field'];
$this->request->query('key_name');
https://riptutorial.com/it/home 17
$this->request->query('data.subfield');
namespace App\Model\Table;
use Cake\ORM\Table;
$this->belongsTo('Authors', [
'className' => 'Authors',
'foreignKey' => 'author_id',
'joinType' => 'INNER',
]);
$this->hasMany('Tags');
$this->hasOne('Categories');
$this->hasAndBelongsToMany('Topics');
}
}
Il post appartiene all'autore (One to One) , significa che nella tabella dei posts è presente una
chiave straniera author_id che è associata alla tabella id of authors .
Messaggio ha molte Tag (uno a molti), significa in tags tabella ha una chiave esterna post_id che
è associato con id di posts tavola.
Il post ha un tag (molti a uno o uno a uno) , significa che nella tabella dei posts è presente una
chiave straniera category_id che è associata id della tabella delle categories .
Post ha e appartiene a Topics (Many to Many) , questa è una relazione molte a molte tra posts e
https://riptutorial.com/it/home 18
topics table. per mantenere molti a molti relazione deve essere necessario creare la terza tabella,
tabella, il nome della tabella dovrebbe essere posts_categories . Campi di questa tabella come
indicato di seguito
https://riptutorial.com/it/home 19
Titoli di coda
S.
Capitoli Contributors
No
Gestione delle
2 Max90, Rashid Khan
richieste Ajax
Istanziazione di
3 modelli da un'altra Holt, RavatSinh Sisodiya, Zetaphor
origine dati
Suggerimenti per la
arilia, CodeZilla, Haresh Vidja, IWillScoop, Max90, Miheretab
4 codifica di
Alemu, parsaya
CakePHP3
https://riptutorial.com/it/home 20