Felhasználói eszközök

Eszközök a webhelyen


oktatas:web:back-end_framework:cakephp

Különbségek

A kiválasztott változat és az aktuális verzió közötti különbségek a következők.

Összehasonlító nézet linkje

Előző változat mindkét oldalonElőző változat
Következő változat
Előző változat
oktatas:web:back-end_framework:cakephp [2023/06/02 21:56] – [Törlés] adminoktatas:web:back-end_framework:cakephp [2025/08/01 11:10] (aktuális) – eltávolítva admin
Sor 1: Sor 1:
-[[oktatas:web:back-end_framework|< Back-end framework]] 
- 
-====== CakePHP ====== 
- 
-  * **Szerző:** Sallai András 
-  * Copyright (c) Sallai András, 2021, 2022, 2023 
-  * Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|CC Attribution-Share Alike 4.0 International]] 
-  * Web: https://szit.hu 
- 
-===== A CakePHP ===== 
- 
- 
-Gyors, letisztult, könnyen használható PHP keretrendszer. 
- 
-Webhely: 
-  * https://cakephp.org/ 
- 
- 
-===== Kezdés ===== 
- 
-Szükségünk van a composer-re. 
- 
- 
-Projekt készítése: 
-  composer create-project --prefer-dist cakephp/app:~4.3 projekt01 
- 
- 
-Projekt létrehozása az aktuális könyvtárba: 
-  composer create-project --prefer-dist cakephp/app:~4.3 . 
- 
-Egyszerűen: 
-  composer create-project cakephp/app app01 
- 
-===== Könyvtársturktúra ===== 
- 
-<code> 
-app01/ 
-  |-bin/ 
-  |-config/ 
-  |-logs/ 
-  |-plugins/ 
-  |-resources/ 
-  |-src/ 
-  |  |-Console/ 
-  |  |-Controller/ 
-  |  |-Model/ 
-  |  `-View/ 
-  |-templates/ 
-  |-tests/ 
-  |-tmp/ 
-  |-vendor/ 
-  |-webroot/ 
-  |-composer.json 
-  |-index.php 
-  |-phpcs.xml 
-  |-phpstan.neon 
-  |-phpunit.xml.dist 
-  `-README.md 
-</code> 
- 
-===== Fejlesztői szerver ===== 
- 
-  bin/cake server 
- 
- 
-Van egy alap weblap: 
-  * http://localhost:8765/ 
- 
- 
-===== Adatbázis ===== 
- 
-Létre kell hozni az adatbázist, táblákkal együtt. 
- 
-<code mysql> 
-create database app01 
-character set utf8 
-collate utf8_hungarian_ci; 
-</code> 
- 
-<code mysql> 
-grant all privileges 
-on app01.* 
-to app01@localhost 
-identified by 'titok'; 
-</code> 
- 
-A CakePHP-ban az adatbázisban hozzuk létre a táblát, a ORM ebből készít 
-osztályt. 
- 
- 
-<code mysql> 
-create table employees ( 
-  id int not null primary key auto_increment, 
-  name varchar(50), 
-  city varchar(50), 
-  salary double 
-); 
-</code> 
- 
-===== Adatbázis elérése ===== 
- 
- 
-==== app_local.php ==== 
- 
-Másik lehetőség az app_local.php fájl szerkesztése. 
- 
-Szerkesszük a **config/app_local.php** állományt. 
- 
-<code php> 
-        'default' => [ 
-            'host' => 'localhost', 
-            'username' => 'app01', 
-            'password' => 'titok', 
-            'database' => 'app01', 
-            'url' => env('DATABASE_URL', null), 
-        ], 
-</code> 
- 
- 
-===== Generálás ===== 
- 
-Generáljunk modellt és kontrollert: 
- 
-<code> 
-bin/cake bake model employees 
-</code> 
- 
- 
-A modell létrehozásához előbb létre kell hozni az adatbázist 
-a táblával együtt. A modell létrejön a tábla alapján. 
- 
- 
-Létrejön az src/Model/Entity/Employee.php fájl. 
- 
-Hozzuk létre a kontrollert: 
- 
-<code> 
-bin/cake bake controller employees 
-</code> 
- 
-Létrejön az src/Controller/EmployeeController.php fájl. 
- 
-===== Routing ===== 
- 
-Szerkesszük a routingot: 
-<code php> 
-// config/routes.php 
- 
-     //... 
-     $routes->scope('/api', function (RouteBuilder $builder) { 
-            $builder->setExtensions(['json']); 
-            $builder->resources('Employees'); 
-     }); 
-</code> 
- 
-A routingot most API számára állítottuk be. 
- 
-===== Összes lekérdezése ===== 
- 
- 
-Szerkesszük a kontrollert: 
-<code php src/Controller/EmployeesController.php> 
-    public function index() 
-    { 
-        $employees = $this->Employees->find('all')->all(); 
-        $this->set('employees', $employees); 
-        $this->viewBuilder()->setOption('serialize', ['employees']); 
-    } 
-</code> 
- 
-Nézzük meg API kliensben: 
-  * http://localhost:8765/api/employees.json 
- 
-^  Végpont  ^  Metódus  ^ 
-| api/employees.json | get | 
- 
- 
-===== Hozzáadás ===== 
- 
-A POST, PUT, PATCH, DELETE metódusoknak CSRF tokenhez vannak kötve. 
- 
-Az eredeti CSRF beállítást finomítjuk: 
- 
-<code php src/Application.php> 
-    public function middleware(MiddlewareQueue $middlewareQueue): MiddlewareQueue 
-    { 
-        $middlewareQueue 
-            ->add(new ErrorHandlerMiddleware(Configure::read('Error'))) 
-            ->add(new AssetMiddleware([ 
-                'cacheTime' => Configure::read('Asset.cacheTime'), 
-            ])) 
-            ->add(new RoutingMiddleware($this)) 
-            ->add(new BodyParserMiddleware()); //Hamarabb lezárjuk a láncot 
- 
-            //Az útvonal kizárása: 
-            $csrf = new CsrfProtectionMiddleware(); 
-            $csrf->skipCheckCallback(function ($request) { 
-                if ($request->getParam('_matchedRoute') == '/api/employees') { 
-                    return true; 
-                } 
-            }); 
-            $middlewareQueue->add($csrf); 
- 
-        return $middlewareQueue; 
-    } 
-</code> 
- 
-Az összes /api kezdetű végpontot is megadhatunk: 
-<code php> 
-            $csrf->skipCheckCallback(function ($request) { 
-                $endpoint = $request->getParam('_matchedRoute'); 
-                if (  preg_match('/^\/api/', $endpoint)) { 
-                    return true; 
-                } 
-            }); 
-</code> 
- 
-  * https://book.cakephp.org/4/en/security/csrf.html#skipping-csrf-checks-for-specific-actions (2023) 
- 
-===== Hozzáadás ===== 
- 
-<code php src/Controller/EmployeesController.php> 
-    public function add() 
-    { 
-        $this->request->allowMethod(['post']); 
-        $employee = $this->Employees->newEntity($this->request->getData()); 
-        if ($this->Employees->save($employee)) { 
-            $message = 'Saved'; 
-        } else { 
-            $message = 'Error'; 
-        } 
-        $this->set([ 
-            'message' => $message, 
-            'employee' => $employee, 
-        ]); 
-        $this->viewBuilder()->setOption('serialize', ['employee', 'message']); 
-    } 
-</code> 
- 
-  * http://localhost:8765/api/employees.json 
- 
-^  Végpont  ^  Metódus  ^ 
-| api/employees.json | post | 
- 
-<code json> 
-{ 
- "name": "Tagadó Árpád", 
- "city": "Szolnok", 
- "salary": 384 
-} 
-</code> 
- 
-===== Módosítás ===== 
- 
-<code php src/Controller/EmployeesController.php> 
-    public function edit($id = null) 
-    { 
-        $this->request->allowMethod(['put']); 
-        $employee = $this->Employees->get($id); 
-        $employee = $this->Employees->patchEntity($employee, $this->request->getData()); 
-        if ($this->Employees->save($employee)) { 
-            $message = 'Saved'; 
-        } else { 
-            $message = 'Error'; 
-        } 
-        $this->set([ 
-            'message' => $message, 
-            'employee' => $employee, 
-        ]); 
-        $this->viewBuilder()->setOption('serialize', ['employee', 'message']); 
-    } 
-</code> 
- 
-Ha a 9-s dolgozó adatait frissítjük: 
- 
-  * http://localhost:8765/api/employees/9.json 
- 
-^  Végpont  ^  Metódus  ^ 
-| api/employees/9.json | put | 
- 
-Amit küldeni kell: 
- 
-<code json> 
-{ 
- "name": "Tagadó Árpád", 
- "city": "Szolnok", 
- "salary": 384 
-} 
-</code> 
- 
-===== Törlés ===== 
- 
-<code php src/Controller/EmployeeController.php> 
-    public function delete($id) 
-    { 
-        $this->request->allowMethod(['delete']); 
-        $employee = $this->Employees->get($id); 
-        $message = 'Deleted'; 
- 
-        if (!$this->Employees->delete($employee)) { 
-            $messge = 'Error'; 
-        }  
-        $this->set('message', $message); 
-        $this->viewBuilder()->setOption('serialize', ['message']); 
-         
-    } 
-</code> 
- 
-Delete metódussal küldünk kérést, például a 9 dolgozó törlése esetén a következő címre: 
-  * http://localhost:8765/api/employees/9.json 
- 
-^  Végpont  ^  Metódus  ^ 
-| api/employees/9.json | delete | 
- 
- 
-===== A routing szétbontása ===== 
- 
-<code php> 
-$routes->scope('/api', function (RouteBuilder $builder) { 
-    $builder->setExtensions(['json', 'xml']); 
-    $builder->get('/employees', ['controller' => 'Employees', 'action' => 'index']); 
-    $builder->post('/employees', ['controller' => 'Employees', 'action' => 'add']); 
-}); 
-</code> 
- 
-===== Linkek ===== 
- 
-  * https://book.cakephp.org/4/en/development/configuration.html (2023) 
-  * https://book.cakephp.org/4/en/development/rest.html (2023) 
-  * https://book.cakephp.org/4/en/development/routing.html (2023) 
- 
  
oktatas/web/back-end_framework/cakephp.1685735763.txt.gz · Utolsó módosítás: 2023/06/02 21:56 szerkesztette: admin