login  Naam:   Wachtwoord: 
Registreer je!
 Forum

CakePHP 2 benamingen en overige (Opgelost)

Offline GroundZero - 11/06/2015 16:58
Avatar van GroundZeroLid Beste,

ik kom er maar niet uit hoe de benamingen nu moeten zijn in CakePHP. Ik hoopte dat iemand mij dit kan uitleggen.

1. Controller
2. Model
3. View
4. Database

Als ik het goed begrepen heb:

De controller zorgt voor een verbinding met de MYSQL database.
Het model zorgt voor alle verwerking tussen database en code.
De view verzorgt alles wat op het beeldscherm zichtbaar word.

Hoe zit het nu precies met hoofdletters, kleine letters, underscores en overige?

Lang gelden met Cake gewerkt en moest vandaag een nieuwe pagina toevoegen maar kom er gewoon weg niet meer uit.

Bijvoobeeld:

database tabel heet: search_queries
Controller heet: SearchqueriesController
Model heet: Searchquerie
View heet: index.ctp

Ik weet dat de model naam "dom" kijkt, met foute spelling maar goed haha.

Krijg nu de melding dat hij mijn database object niet kan vinden.

Error: Call to a member function find() on a non-object
File: /home/alexdev/app/Controller/SearchqueriesController.php
Line: 5

Anyways, heb natuurlijk op internet gekeken maar (voor mij persoonlijk) word het hier niet begrijpbaar uitgelegd hoe het nu precies zit. Hopelijk kan hier iemand het mij vertellen.

3 antwoorden

Gesponsorde links
Offline Thomas - 11/06/2015 19:41
Avatar van Thomas Moderator Google: cakephp naming conventions, eerste hit?
Offline GroundZero - 15/06/2015 09:01 (laatste wijziging 15/06/2015 09:32)
Avatar van GroundZero Lid Klopt maar ik snap het niet helemaal goed. Krijg toch elke keer problemen.
Nu bijvoorbeeld de foutmelding

"Table sellouts for model Sellout was not found in datasource default."

Als ik een tabel heb met de naam (exact zoals hier geschreven) sell_outs hoe moeten mijn andere bestanden dan genaamd zijn? wat ik nu heb is het volgende:

controller/SellOutsController.php (Elk woord met een hoofdletter beginnen S/U/C, en verlengd woord "s")
model/SellOut/SellOut.php (Elk woord met een hoofdletter beginnen S/O en verkort woord zonder "s")
view/SellOut/index.ctp

In mijn model staat:

  1. class SellOut extends AppModel {
  2. var $name = '[b]sell_outs[/b]';
  3. }


In mijn controller staat:

  1. class [b]S[/b]ellouts[b]C[/b]ontroller extends AppController {
  2. public $helpers = array('Html', 'Form');
  3.  
  4. public function index(){
  5.  
  6. }
  7. }



EDIT:

Heb het werkend nu maar waar de fout zat weet ik nu nog steeds niet.
De namen zoals ik nu gebruikt:

table name: sell_outs
model: SellOut.php
controller: SellOutController.php

Offline Thomas - 15/06/2015 13:54 (laatste wijziging 15/06/2015 13:55)
Avatar van Thomas Moderator Volgens mij maakt de case-sensitivity van een bestand niet uit in PHP, maar de spelling (uiteraard) wel.

Je zou dit kunnen testen door een bestandsnaam volledig in CAPS of lowercase op te slaan.

De classname in het bestand maakt waarschijnlijk wel uit, want daar worden hoogstwaarschijnlijk vaste regels gebruikt voor de omzetting van bestandsnaam naar class, of andersom. De regel waarbij een "s" op het einde wordt toegevoegd is wel een beetje raar (als dat zo werkt) maar namen waarin _underscores_ zitten die vertaald worden naar een aaneengeschreven equivalent met hoofdletters voor de letter na de underscore komt volgens mij vaker voor. Dit moet in ieder geval een "deterministisch" stramien volgen anders kan een machine hier geen chocola van maken.

Ik kan mij niet voorstellen dat hier (de manier van naamgeving en "resolving") geen uitleg over geschreven is - deze moet er zijn vermoed ik haast.
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.365s