Interactiunea intre model, view si controller in cake.

CodeIgniter, Zend Framework, Cake PHP, Yii, symfony, Prado, Seagull, Kohana, MODX, eZ Components

Moderator: Moderatori

Drk_alien
Average Member
Mesaje: 107
Membru din: Lun Iul 05, 2010 4:27 pm
Localitate: Oradea
Contact:

Interactiunea intre model, view si controller in cake.

Mesajde Drk_alien » Sâm Sep 29, 2012 9:10 pm

Buna, din anumite circumstante sunt nevoit sa lucrez in Cake.
Problema mea e ca nu prea imi dau seama cum interactioneaza cele 3 parti (model, view si controller) .Am downloadat versiunea 2.2.2

Am creat un controller User:

Cod: Selectaţi tot

class UserController extends AppController
{
   public function index()
   {
           //cum apelez de aici o functie din Model?
           $arr = $model->funcDinModel();
     //cum trimit datele catre index.ctp pt a fi prelucrate pt afisare?
   }

}


Cum trebe sa arate clasa din Model ca sa pot accesa metodele din libraria cake ( ma refer la metodele pt select, update,delete din baza de date , etc ) ?
Cum trebe sa arate index.ctp ca sa pot prelucra variabila $arr pt afisare?


Sper ca ati inteles unde am probleme.
Chiar am nevoie de ajutor, un exemplu simplu cu un controller, un model si un view nu mi-ar strica.

Stima



Reventon
Average Member
Mesaje: 68
Membru din: Lun Ian 31, 2011 5:07 pm

Mesajde Reventon » Dum Sep 30, 2012 2:16 am

am refacut postul asta, nu cred ca am fost destul de clar in cel anterior
sa presupunem ca ai

Controller - UsersController.php:

Cod: Selectaţi tot

class UsersController extends AppController {

   public $name = 'Users'; // NUMELE CONTROLLERULUI, CONTEAZA LA AUTO INCLUDE MODEL SI VIEW
   
   public function index()
   {
           $arr = $this->user->cauta(); // $this->model->metoda();

           $this->set('arr', $arr);  // SETEAZA O VARIABILA CARE VA FI TRANSMISA IN VIEW

           $this->render('/users/status'); // INCARCA UN VIEW. DACA NU SPECIFICI VIEW-UL, VA INCARCA /users/index
   }

}


Model - User.php

Cod: Selectaţi tot

class User extends AppModel {
   var $useTable = 'user'; // NUMELE TABELULUI CARE VA FI FOLOSIT LA INTEROGARI (find, findAll)
   
   public function cauta() {
    // ... COD
    return 'Reventon';
   }
}


View - Index.ctp (sau Status.ctp, depinde de ceea ce vrei sa afisezi)

Cod: Selectaţi tot

<h1>Utilizatori online</h1>
<?php echo $arr; ?>



controllerul va cauta sa incarce automat modelul si view-ul.
daca ai un controller 'UsersController', acesta va cauta sa includa un model cu numele 'User'.
deci, plural pentru numele controlerului (+ 'Controller') si singular pentru numele modelului.

daca nu definesti ce view sa incarce, cakephp face render automat la un view.
va cauta sa incarce un view care corespunde cu numele de la controler si metoda (/controller/method).
in cazul de fata va incerca sa incarce '/users/index'
daca vrei sa incarci alt view, specifici calea.
ex: $this->render('/users/login');



poti sa incarci si separat un Model, cu loadModel
http://book.cakephp.org/2.0/en/controllers.html

cakephp este foarte simpatic, dar dureaza ceva pana ii prinzi fenta

Drk_alien
Average Member
Mesaje: 107
Membru din: Lun Iul 05, 2010 4:27 pm
Localitate: Oradea
Contact:

Mesajde Drk_alien » Dum Sep 30, 2012 10:58 am

Am prins ideea .Multumesc tare mult , nu stiam ca poti seta din ce tabela vrei sa selectezi.

Sunt multe pe care nu le stiu, eu lucrez in dotKernel (bazat pe Zend)...are cu totul alta idee.

nevvermind
Senior Member
Mesaje: 1264
Membru din: Mar Iun 22, 2010 3:17 pm

Mesajde nevvermind » Dum Sep 30, 2012 12:57 pm

"eu lucrez in dotKernel (bazat pe Zend)...are cu totul alta idee."
Sunt cateva framework-uri care fac exceptie de mvc, dar zf, cake sau dotkernel nu sunt printre ele.

Reventon
Average Member
Mesaje: 68
Membru din: Lun Ian 31, 2011 5:07 pm

Mesajde Reventon » Dum Sep 30, 2012 1:27 pm

ma bucur ca am reusit sa te ajut.
crede-ma ca la inceput mi-a luat 3 zile sa inteleg ce ti-am explicat mai sus si am vrut sa te scutesc de stres.
asa se intampla cand te intalnesti prima oara cu un sistem nou.
daca cineva nu ti-l explica, e dificil la inceput, chiar si cu documentatia oficiala in fata.


Înapoi la “Framework-uri PHP”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 4 vizitatori