Auteur
Grafikart

115 Commentaires

6e5f5c6231b81f51fd62a39e43deac81?s=200&r=pg&d=mm
darkhope, 30-06-2014 12:35:44 - Répondre

Super tutoriel, je suis en train de mettre cette structure en application mais je bloque un peu, pour ne pas polluer j'ai créé un sujet ici http://www.grafikart.fr/forum/topic/13325
Si des âmes charitables peuvent me donner leurs conseils :)

82f0954256101120a4812b27021a2acb?s=200&r=pg&d=mm
Ben74, 16-05-2014 20:22:20 - Répondre

Superbe, clair et efficace, il ne manque plus que les design patterns passés en revue et symfony2

08478a7049cc24ac7fee6715586f0964?s=200&r=pg&d=mm
zkiller, 22-03-2014 15:59:02 - Répondre

Voila un lien d'un site qui a copié ton tuto : http://www.jcc40.fr/?p=393

57d2b8f5e677b18d3a77f389621fb06e?s=200&r=pg&d=mm
dingo, 26-08-2014 22:04:20 - Répondre

Ce tuto a été publié sur youtube par grafikart le 8 Nov, 2013.

Le site jcc40 a publié son article - mieux documenté car il contient une analyse, le 22 Mars, 2012.

Et si on pousse un peu plus loin, dans le même période que jcc40, un article similaire a été publié dans un magasine ...

4bf1293b0f850b7830ca8e03fccc5bd1?s=200&r=pg&d=mm
thidenthi, 03-02-2014 22:33:11 - Répondre

Super Tuto , merci :)

marche niquel sur wamp par contre sur un serveur mutualisé de 1&1 ça me donne un problème de header (au moment de la redirection du client si il n'est pas loguer

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at -repertoire de mon serveur-/controllers/indexControllers.php:24) in -repertoire de mon serveur-/core/Session.php on line 6

Warning: Cannot modify header information - headers already sent by (output started at -repertoire de mon serveur-/controllers/indexControllers.php:24) in -repertoire de mon serveur-/core/controller.php on line 65

dans mon Session.php à la ligne 6

public function __construct(){
if(!isset($_SESSION)){
session_start(); <<< ---------------------
}
}

à la ligne 65 controler.php

function redirect($url,$code = null ){
if($code == 301){
header("HTTP/1.1 301 Moved Permanently");
}
header("Location: ".Router::url($url)); <<<< ----------------------------

}

dans indexController rien de special un render vers la vue principale du site

ça serait sympa de m'aider , je galère avec ces problemes de header

Merci a bientot

51dbca5cbc05dfcca5a98301a2a4db39?s=200&r=pg&d=mm
webeur, 04-01-2014 11:33:11 - Répondre

Super Tuto Merci Grafikart

Aa160c0d24efccd539749bc2be2d07ac?s=200&r=pg&d=mm
Matthx86, 16-12-2013 17:33:45 - Répondre

Bonjour à tous,

J'aimerais faire passer des valeurs par un POST est-ce que cela fonctionne aussi avec : call_user_func_array() ?

Car j'aimerais éviter de faire transiter trop d'infos par l'url :)

Merci beaucoup,
Matthx86

B3791a0b57c5932c0d4999fb3fac7915?s=200&r=pg&d=mm
mysterio, 26-11-2013 19:05:23 - Répondre

Merci pour vos tutoriels qui m'aident beaucoup .
J'ai une question au niveau de l'organisation.
Pour un site qui a plusieurs pages dont certaines parties reste inchangées comment organiser ?
Voici ma methode mais je ne me retrouve plus avec le mvc .
Views (Pages: dossier ou je mets toutes les pages, parts: dossier ou je met toutes les parties du site afin de les reutiliser)
Questions : dois_je faire un controlleur et un modèle par page ou bien un controlleur et modèle par partie ?
Merci .

B7aae48c58b7ea7f8935feed8e0f0562?s=200&r=pg&d=mm
dancom, 22-11-2013 18:02:26 - Répondre

Bon tutoriel mais une chose qui me chagrine c'est qu'il ne soit pas en PDO pour la base de données.
Surtout que PDO est à la mode ces temps-ci.

Pas facile à suivre les tutoriels ici à cause de l'automatique des commandes et des raccourcis
claviers utilisée de l'éditeur de texte.

A part ça, c'est très bien.

Dcf3c36cb6a654ef061ccafb9854aab1?s=200&r=pg&d=mm
abdessamad, 27-06-2013 06:23:56 - Répondre

qlq peux me passer le code SPT

611f7ac8a2d4bed9871b79dd3672909d?s=200&r=pg&d=mm
Abu Milo, 03-07-2013 19:13:52 - Répondre

Bonjour abdessamad,

si tu suis le tuto de A a Z, tu auras le code. Sinon passe en premium, cela te donnera accès a un zip des sources des tutos, et cela participera au développement du site par un don au dev. :-)

+++

33725
Brandon-xprodeur, 26-07-2014 12:57:34 - Répondre

Bonjour, vous devez être Premium, je vous invite à acheter le grade à 3,5 euros.

Daded6fd27c32ba33999a5ef09d09931?s=200&r=pg&d=mm
Luciole, 12-02-2013 13:14:24 - Répondre

Bonjour,
j'ai l'impression qu' une erreur c'est glissé dans ce superbe tutoriel. Je n'arrive pas à sortir de cette page : erreur 404
je pense que la fonction method_exists renvoie toujours false, ce qui me semble logique puisque il teste la fonction index de Controller, or index n'existe que dans "tutoriel", je me demande si mon héritage fonctionne? j'ai pourtant bien mis "extends Controller".
J'ai testé en mettant "tutoriels" dans method_exists mais du coup c'est l'inverse je ne repasse jamais en 404 erreur.
Quelqu'un pourrait m'aider svp?

Daded6fd27c32ba33999a5ef09d09931?s=200&r=pg&d=mm
Luciole, 12-02-2013 15:00:39 - Répondre

Pour être une peu plus claire sur ma dernière phrase, j'ai créé un objet "tutoriels" plutôt que "controller" se qui m'a permis de continuer le tuto mais sur la fin avec les Id je devrai avoir des pages 404 erreur quand je clique sur les liens mais à la place j'ai des erreurs. du coup je repose ma question Xd
Quelqu'un pourrait m'aiguiller car je voie pas du tout d’où cela peut venir?

0c6165b71f2d00810023a582c3d56cdc?s=200&r=pg&d=mm
Benpixels, 30-01-2013 22:07:15 - Répondre

Merci ! :)

Bf43327926dd9893dbfb34c8eba2abb4?s=200&r=pg&d=mm
lafi mostafa, 26-09-2013 20:30:09 - Répondre

Bonjour, svp vous pouvez m'envoyé le code source de ce tuto

2c9881d0475e278b5aeceb4fda2fa0c9?s=200&r=pg&d=mm
Zyo1, 26-01-2013 17:28:34 - Répondre

Bonjour,

j'ai téléchargé le code et celui-ci m'affiche les erreurs suivante :

Warning: require(controllers/.php) [function.require]: failed to open stream: No such file or directory in C:\Program Files (x86)\EasyPHP-5.3.9\www\mvc\index.php on line 15

Fatal error: require() [function.require]: Failed opening required 'controllers/.php' (include_path='.;C:\php\pear') in C:\Program Files (x86)\EasyPHP-5.3.9\www\mvc\index.php on line 15

Pouvez-vous m'aider svp?

10a7fa10f18959b02afaa09fd4bcda7b?s=200&r=pg&d=mm
vdnet, 02-06-2013 15:20:56 - Répondre

J'ai le même problème que toi et ne comprend pas non plus pourquoi.

5ad28f7c8731dda882a59d402ea67bf2?s=200&r=pg&d=mm
cPage, 01-04-2014 00:33:48 - Répondre

Ajouter une condition pour éviter que index.php se retrouve avec un contrôleur vide.

$controller = (!empty($params[0]))?$params[0]:'tutoriels';

Eb4edd0e9639db7e9c8dd1c3d3e9d803?s=200&r=pg&d=mm
hassan, 10-11-2012 03:03:29 - Répondre

bonjour,
je voudrais mettre une image dans le fichier dy layout 'default.php' mais rien n'est affiché :(

Ff99ae4790953b372fef6cf3783bcb6a?s=200&r=pg&d=mm
Mido, 07-11-2012 00:44:58 - Répondre

Bonjour,

je vous remercie pour ce tuto bien organisé et pour ce site aussi
j'ai essayé de suivre votre tuto mais je suis bloqué dés le début au niveau de RewriteRule j'ai fait exactement comme vous avez fait mais j'ai une erreur qui s'affiche
voici ce que j'ai mis RewriteRule ^([a-zA-Z0-9\-\_\/]*)$ index.php?p=$1 ( c'est bien ce qu'il faut faire?)

et le message d'erreur que j'ai :

Objet non trouvé!

L'URL demandée n'a pas pu être trouvée sur ce serveur. Si vous avez tapé l'URL à la main, veuillez vérifier l'orthographe et réessayer.

Si vous pensez qu'il s'agit d'une erreur du serveur, veuillez contacter le webmestre.

Error 404

127.0.0.1
11/06/12 23:35:45
Apache/2.2.21 (Win32) PHP/5.3.9

Merci d'avance

B0ec6cfe75a3a3e24191d8c1e58d94e2?s=200&r=pg&d=mm
lll, 16-09-2012 12:18:29 - Répondre

Merci : )

2af4edb25d36257727e324169aed2bcc?s=200&r=pg&d=mm
marcus wright, 14-09-2012 14:11:30 - Répondre

Merci pour tout, la poo me paraît un peu plus claire. Je vais essayer d'utiliser PDO avec ceci. Merci encore pour ce partage de connaissance et la pédagogie très claire et sympa.

873db1af8a20c2c6885b7ba3bcd7b8ec?s=200&r=pg&d=mm
2dar, 17-03-2012 23:53:32 - Répondre

salut
le code : print_r($_GET['p']);
il me affiche le nom de variable $l pas l'url :S je c'est pas pourquoi !!
aidez moi svp :(

3d353f2b29201e3e820c64532fae1ee6?s=200&r=pg&d=mm
Soufiane, 04-08-2012 06:55:28 - Répondre

expliquez nous un peu plus pour pouvoir vous aidez !

8bfb06a809bfd465442ab20cbbc0c584?s=200&r=pg&d=mm
romaindu86, 08-03-2012 21:12:36 - Répondre

tres bon tuto.j'aimerai crer un menu horizontale et un autre verticale qui change selon les clic sur le menu horizontale.comment faire?je ne veux pas forcément le code mais la démarche

D41d8cd98f00b204e9800998ecf8427e?s=200&r=pg&d=mm
stade13, 23-02-2012 17:01:48 - Répondre

J'ai aussi le même problème Undefined index: p quand je définie les règles sur htaccess et j'essaye de récupéré avec $_GET['p']

7c284bb6ebc160032e850177b32358aa?s=200&r=pg&d=mm
med reda, 24-01-2012 23:25:11 - Répondre

Je vous remercie pour ce pour cet excelent tuto et je me permet de vous poser 2 questions:
Où se trouve le fichier qui contient le web root sur votre PC.
ça sert à quoi exactement la fonction ob_start() ?

D41d8cd98f00b204e9800998ecf8427e?s=200&r=pg&d=mm
PaHtP, 19-01-2012 16:43:28 - Répondre

Super tuto. Pile poil ce que je cherchais.

9d5c2e32bf8c7760f4e4b016d50ca0eb?s=200&r=pg&d=mm
Julien_xD, 07-01-2012 07:14:31 - Répondre

Merci pour les explications ! C'est plus clair !

D41d8cd98f00b204e9800998ecf8427e?s=200&r=pg&d=mm
mgdu13 , 22-12-2011 12:27:19 - Répondre

Super tuto comme d'habitude ! :D

D41d8cd98f00b204e9800998ecf8427e?s=200&r=pg&d=mm
Matt74, 18-12-2011 03:28:03 - Répondre

Un grand merci pour ce tuto!

8cf65cca180075873daff451430a2989?s=200&r=pg&d=mm
halpsb, 11-12-2011 15:48:29 - Répondre

Bonjour, j'ai un problème dont je ne comprends pas:

Lorsque je fais mon print_r($params), la page m'affiche: Array ( [0] => )
Même en ajoutant ?p=accueil à la fin de l'url.
Pourtant j'ai bien le .htaccess sur mon serveur.
Je ne vois pas du tout à quoi c'est dû et je me retrouve bloqué à ce niveau du tuto.
Quelqu'un sait pourquoi?
Merci !

Eab5d80471dc5bdb031069e18bb2283b?s=200&r=pg&d=mm
benjamin-derepas, 09-12-2011 19:01:27 - Répondre

Peut on créer un MVC (pour un site d'articles) sans la fameuse fonction ob_start() ?
Car sans le buffer, je ne vois pas comment sa va fonctionner ;/

47311c073350a4c51ee3abadfcdd13db?s=200&r=pg&d=mm
Lothar, 23-11-2011 19:42:32 - Répondre

Bonjour à tous, il est intéressant de comprendre comment fonctionne une architecture MVC mais totalement inutile de faire chacun son propre MVC car il n'y a que vous qui pourrez l'utiliser . J'entends par la qu'un MVC fiable doit avoir une couverture de code maximum et une documentation . Ce qui n'est pas fait en général lorsque que l'on code nous même notre MVC . Ce n'est pas pour rien qu'il existe des frameworks . De plus sans doc un autre développeur perdra énormément de temps à comprendre ce que vous avez fait .

9d8d6791419a11bd37d0624092c102b0?s=200&r=pg&d=mm
walidrift, 20-11-2011 04:57:31 - Répondre

Un grand merci pour ce tuto

D41d8cd98f00b204e9800998ecf8427e?s=200&r=pg&d=mm
Matt, 02-10-2011 00:36:49 - Répondre

Bonjour, d'abord merci pour ce tuto ;)
J'aimerai savoir si quelqu'un a essayé de mettre en place ce système sur un serveur mutualisé 1&1? J'ai une erreur 404 de 1&1. Comme d'habitude chez eux cela doit provenir de l'url rewriting, est-ce que quelqu'un à réussi à résoudre ce petit problème?

Merci :)

E67b7cc62caee7f660975034ab4ba900?s=200&r=pg&d=mm
gamix91, 26-09-2011 16:13:55 - Répondre

Est-ce normale que le lien : http://localhost/mvc/ affiche une page relevant des erreurs ? car je n'arrive pas a ce que cette page affiche un index , sinon le reste marche
Merci

D41d8cd98f00b204e9800998ecf8427e?s=200&r=pg&d=mm
Mikachu, 20-09-2011 14:01:07 - Répondre

J ai enfin pigé le MVC ..... Merci bcp Grafikart. Car fait 10 fois que je me regarde la vidéo, et j ai eu enfin le déclic.

1
Grafikart, 20-09-2011 16:01:27 - Répondre

Bienvenue dans le monde du MVC ! tu vas voir tout est plus simple maintenant :D

E67b7cc62caee7f660975034ab4ba900?s=200&r=pg&d=mm
gamix91, 26-09-2011 16:14:47 - Répondre

tkt , je l'ai regardé aussi une bonne 10e de fois c'est pas forcement évident ^^

5deb069d60c987ba01806c3a94af6973?s=200&r=pg&d=mm
zozo, 11-09-2011 11:04:44 - Répondre

merci pour ce tuto très bien fait,
je propose une petit amélioration pour l'utilisation des layout avec plusieurs blocks{header, contents['left','center', rigth] ,footer, };

D41d8cd98f00b204e9800998ecf8427e?s=200&r=pg&d=mm
Thibault, 18-08-2011 02:36:30 - Répondre

Salut à tous :) déjà je dois dire c'est un très bon tuto :) Un tout grand merci à vous
Par contre une petite question concernant le regex, pourquoi lorsqu'on a :
RewriteRule ^(.*)$ index.php?p=$1
un print_r($_GET) me retourne Array ( [p] => index.php ) alors que mon url ne contient pas d'index.php, dans la vidéo vous mentionnez le fait que la redirection est "trop forte" mais sans vraiment expliquer le pourquoi :)
Voila si quelqu'un à la solution ca me ferai me plaisir :p même si l'ensemble fonctionne j'aime comprendre comment fonctionnes les choses :)
Bonne soirée à vous (et merci encore Grafikart)

Ac422f222c9a59ce5a00e75af7473f19?s=200&r=pg&d=mm
beegees, 09-08-2011 22:35:56 - Répondre

Super tuto.

Dommage qu'on ne va pas un rien plus loin en montrant comment mettre à jour la bd avec AJAX.

03c6f28a6e74fdc0c46ddfaf379330fc?s=200&r=pg&d=mm
gseverin, 04-08-2011 17:29:44 - Répondre

C'est un dieu de l'apprentissage ce GARCON , impressionnant !!!!!!
Vos tutaux sont GENIAUX !! pourtant je suis difficile mais la c'est le top !!

E9b8988d460e6eb8d6b6933de2e56b39?s=200&r=pg&d=mm
webou, 04-08-2011 12:55:50 - Répondre

Salut, tu dis dans le tuto que t'as créé un dossier "mvc" mais on le voit pas au niveau de l'onglet "Projects". Merci de me clarifier ce point.
Sans oublier de dire merci pour le tuto :)

D41d8cd98f00b204e9800998ecf8427e?s=200&r=pg&d=mm
TinoStyle, 21-07-2011 12:42:29 - Répondre

Au bout de la seconde vision, j'ai vachement mieux compris
Merci pour ce tuto, il est franchement super

D41d8cd98f00b204e9800998ecf8427e?s=200&r=pg&d=mm
TinoStyle, 20-07-2011 17:04:40 - Répondre

J'ai rien compris... J'ai perdu 30 min de ma vie...

63a91d763a1eae9b3789dc5d52784eef?s=200&r=pg&d=mm
PaulB319, 11-07-2011 11:31:43 - Répondre

Excellent tutoriel, pile ce que je recherchais :) Merci !

D41d8cd98f00b204e9800998ecf8427e?s=200&r=pg&d=mm
omar, 10-05-2011 15:38:59 - Répondre

je pense que ce tutorial et un peu mauvais
pas l'exlication mais le video ,, on ne vois pas les code bien
si vous voulez le next video ou les tuto explique la lesson sous le programme notepad
pour bien voir le code
et merci

868a13f6e30bc5b34df2ff6a644c2094?s=200&r=pg&d=mm
jmStudio, 02-04-2011 16:35:03 - Répondre

Tuto sympa, comme d'habitude. Mais j'ai une petite astuce (apprise de symfony) à proposer pour se passer de la méthode "set" :

public function __set($name, $value)
{
$this->vars[$name] = $value;
}

Comme ça, dans le contrôleur, il n'y a plus qu'à faire

$this->tuto = array(
'titre' => '...',
'contenu' => '...'
);

27d1f2eaaaf3872171db8dc5321955fc?s=200&r=pg&d=mm
JeaM-Pierre, 25-03-2011 13:24:30 - Répondre

Bonjour,

Tout comme juju83, je cherche à faire évoluer le MVC (super tuto au passage merci ^^), pour faire une fonction d'ajout ? Je sais que dans le modèle de base il y a la fonction save(), je voudrais l'utiliser mais je ne sais pas comment l'appeler.

Par exemple pour tutoriel on a une vue index et view, sur index on fait un find. Je créé donc une nouvelle vue add_tuto.php, dans mon controller je rajoute une fonction add_tuto dans laquelle je souhaite appeler save(), mais je ne sais pas quoi mettre dedans.

Une idée ?

427705a6c985bdc6dbf1259dfe2dd7b8?s=200&r=pg&d=mm
Guique, 23-03-2011 15:54:07 - Répondre

Merci pour ce tutoriel!
Je le termine à l'instant et il est bourré d'informations très utiles sur le modèle MVC.
C'est une très bonne introduction à beaucoup de concepts.

84210b2ee159d517c3cb850c34218c8b?s=200&r=pg&d=mm
Mramine, 09-03-2011 20:11:30 - Répondre

Bonsoir Mr grafikart
il ya un petit souci si le visiteur ne tape ni le contrôleur ni l'action sa veux dire juste http://localhost/mvc/ ca va afficher une page vierge blanche
ya-t'il une solution pour se bug
Merci d'avance

6061110e3b774d386f178def6e208aaf?s=200&r=pg&d=mm
Huviel, 13-03-2011 13:28:25 - Répondre

Magie !
$controller = empty($params[0]) ? 'users' : $params[0];

Et tu fais la même sur l'action.

D41d8cd98f00b204e9800998ecf8427e?s=200&r=pg&d=mm
anonyme, 04-03-2011 14:51:10 - Répondre

Bonjour j'ai une question si je souhaite pouvoir changer le titre de mes pages facilement exemple dans mon contrôleur je fais setTitle('test'); Je vais devoir ajouter cette fonction dans mon contrôleur principale mais comment faire pour passer cette variable dans le layout ?

D41d8cd98f00b204e9800998ecf8427e?s=200&r=pg&d=mm
MightyDespe, 02-03-2011 16:18:42 - Répondre

Si tu rentres une url du type http://localhost/tuto/index.php
la variable $_GET['p'] n'est pas créé donc ton tableau sera vide :)
Essaie une url du type http://localhost/tuto/index.php?p=posts et la ton print_r affichera quelque chose.
voilà

D41d8cd98f00b204e9800998ecf8427e?s=200&r=pg&d=mm
indowax, 22-02-2011 11:54:43 - Répondre

Bonjour,

Tout d'abord merci pour ce tuto !
J'ai commencé à le faire, et j'ai un petit soucis au moment où je crée le .htaccess
J'ai bien réussi à créer ce fichier, mais quand je fais print_r($params); dans le index.php le navigateur ne m'affiche seulement : Array( => )
Pouvez-vous m'aider ?
Par avance merci !!

D41d8cd98f00b204e9800998ecf8427e?s=200&r=pg&d=mm
indowax, 22-02-2011 11:47:21 - Répondre

Bonjour,

Tout d'abord merci pour ce tuto !
j'ai commencé à le faire, et j'ai un petit soucis au moment où je crée le .htaccess
j'ai bien réussi à créer ce fichier, mais quand je fais print_r($params); dans le index.php le navigateur ne m'affiche seulement : Array (=>)
Pouvez-vous m'aider ?
Par avance merci !!

1894647a611de849e6bb3ffaaa00ea7b?s=200&r=pg&d=mm
ardriseth, 15-02-2011 15:25:13 - Répondre

Bonjour,

Je découvre ce site et ses excellents tutos en ce moment. J'adresse un grand bravo à l'auteur pour son travail, c'est impeccable. :) Et ça donne vraiment envie de se mettre à l'utilisation d'une archi MVC.

Juste une petite remarque au sujet de ce tuto.
Etant donné qu'on utilise "if(method_exists($controller, $action))", on permet donc à l'utilisateur d'accéder directement aux méthodes "set()", "render()" et à tout autre méthode qui se trouverait dans controller.php (arrêtez moi si je dis une bêtise). En effet, il suffit à l'utilisateur de saisir une URL du type "http://localhost/monprojet/home/render" (si j'ai un contrôleur "home", par exemple) pour taper directement dans l'action "render" alors qu'il n'est pas sensé le faire.
Pour résoudre ce problème, on pourrait très bien mettre une condition qui empêcherait d'accéder à certaines actions données (qu'on mettrait dans un tableau par exemple), mais ça nous obligerait à tenir cette condition à jour à chaque nouvelle méthode qui ne devrait pas être accessible directement. A votre avis, quelle serait une solution plus élégante?

Merci.

E235dc5740e55e5378ce6f2af2d9d21b?s=200&r=pg&d=mm
Dearth, 07-03-2011 20:16:18 - Répondre

C'est exact, moi personnellement mes méthodes sont en protected et donc l'utilisateur n'a pas accès à mes fonctions du controller.php

D41d8cd98f00b204e9800998ecf8427e?s=200&r=pg&d=mm
@ntonin, 12-05-2011 20:35:42 - Répondre

Bonjour,
moi j'utilise cela dans le dispatcher (index.php) après avoir jouté le préfixe _ à mes fonctions dangereuses :
if(! preg_match('#^_#',$action)){
call_user_func_array(array($Controller,$action),$params);
}

Assez pratique je dois dire =).

5f3891aae0a63c3e40c1c65d186a1358?s=200&r=pg&d=mm
leon86, 14-02-2011 11:53:31 - Répondre

Salut et merci pour ce super tuto,
j'essaye d'intégrer un peux d'ajax pour gérer un panier en partant de cette structure.
mais ca ne veut pas fonctionner. j'ai rajouter une méthode à la classe Controller pour pouvoir faire une redirection(ca, ca fonctionne). Puis j'ai créer un controlleur 'Panier' et une action 'ajouter'. l'action doit incrémenté le panier puis faire la redirection. mais quand je fais ma requête ajax depuis une des vues, ca ne fonctionne pas.

48f6e48526aec978e04173e87ef07f08?s=200&r=pg&d=mm
juju83, 11-02-2011 12:27:14 - Répondre

salut,
je voudrais completer ce script en utilisant la fonction save presente dans le model
je l'ai rajouter dans ma class ecrire extends model:
function maj(){
return $this->save(array());
}
mais je ne sais pas quoi mettre en paramatres?
j'aimerai pouvoir mettre a jour les donnees qui sont entrees dans un formulaire sur page views/index.php:
<?php foreach ($tuto as $t): ?>

<form method="post" action="index.php">

<input type="hidden" name="id" value="<?php echo $t['id']; ?>"/>
<input type="text" name="titre" value="<?php echo $t['titre']; ?>"/>
<input type="submit" value="envoyer">
</form>
<?php endforeach; ?>
je suis perdue...
merci d'avance

D41d8cd98f00b204e9800998ecf8427e?s=200&r=pg&d=mm
Mighty, 06-03-2011 15:22:15 - Répondre

il me semble que dans le tuto la fonction save gère aussi la mise à jour dans la base de données elle vérifie si il existe une valeur dans le input de type hidden :D pas besoin de réécrire la roue :/

D41d8cd98f00b204e9800998ecf8427e?s=200&r=pg&d=mm
Ryu, 27-01-2011 22:22:41 - Répondre

Excellent tutoriel!
Ca fait un moment que je cherche un tutoriel concret et bien expliqué sur l'architecture MVC, et c'est sur cette page que je l'ai trouvé.
Un grand merci!

68a599aea07caab798a014f22fad248e?s=200&r=pg&d=mm
essaisite, 27-01-2011 09:55:17 - Répondre

Resalut
je ne comprends pas non plus c quoi le dossier core dans mvc ne doit il pas y avoir un dossier view(v) controlleur(c) model(m)

68a599aea07caab798a014f22fad248e?s=200&r=pg&d=mm
essaisite, 27-01-2011 09:52:55 - Répondre

salut
Sympa ton tuto
Il y a beaucoup de choses que je n'ai pas compris,déjà pourquoi avoir deux pages avec le même nom ne doit il pas y avoir un seul index.php

B2874f37b2b10f77e4873d8164b2808c?s=200&r=pg&d=mm
JWysiwyg, 04-01-2011 17:34:25 - Répondre

J'utilisais le MVC avant mais sans POO, et je cherche justement à m'y mettre.

J'ai donc une seule chose à dire : Superbe tutoriel, merci beaucoup :)

Je rajouterais juste une petite chose pour ceux qui le souhaite si le contrôleur est incorrect, de modifier l'index par :

$action = isset($params[1]) ? $params[1] : 'index';

if(file_exists('controllers/'.$controller.'.php')){

require('controllers/'.$controller.'.php');
$controller = new $controller();

if (method_exists($controller, $action)) {

unset($params[0]);
unset($params[1]);
call_user_func_array(array($controller,$action),$params);
$controller->$action();

}
else {

echo 'erreur 404';

}
}
else {

echo 'erreur 404';

}

?>

D41d8cd98f00b204e9800998ecf8427e?s=200&r=pg&d=mm
Geoffrey, 29-12-2010 09:29:30 - Répondre

Bon tutoriel, agréable à suivre. Une bonne explication, merci à toi!

9489b12af1ba99ed48599b5294131564?s=200&r=pg&d=mm
aemaethe, 11-12-2010 19:20:08 - Répondre

J'ai une question sur un bout de code que j'ai du mal à comprendre dans la class Controller:

var $layout = 'default';

"if($this->layout == false)"

Le == false sert à indiquer qu'on utilise juste le layout par défaut ? Si oui ça revient à écrire "if($this->layout == 'default')"

D41d8cd98f00b204e9800998ecf8427e?s=200&r=pg&d=mm
timmy, 18-12-2010 17:14:28 - Répondre

je pense qu'en fait, si par exemple dans le controller "tutoriels", on fait:

$this->layout = false;
$this->render('view');

alors le texte sera afficher en brut, sans le layout autour.Pr

8bf3cbad11b2a8b1e299cf6ea4215044?s=200&r=pg&d=mm
plop, 06-12-2010 04:28:09 - Répondre

Salut Salut !
très bien foutu encore une fois ton tuto !
Sinon j'aurai une question pour une petite aide pour me mettre sur la piste.
je voudrai réussir a faire une navigation ajax pour un back-end avec un MVC (j'ai tester ton tuto dessu par ailleur mais sa marche pas bien dans le cas d'un MVC). Rien a faire, j'ai chercher sur google des exemples ou des pistes mais tout parle d'ASP. Aurai tu une petite piste.
Merci bien et continue tu fais du bon boulo.

3f118b4e8ddf340603a467e80c62aaa3?s=200&r=pg&d=mm
Badwolf, 17-02-2011 08:36:19 - Répondre

Salut, une idée à mon avis (Largement pompé depuis symfony ;p) serait de créer une fonction dans le contrôleur isXmlHttpRequest(), grossièrement retournant true si la variable $_SERVER['HTTP_X_REQUESTED_WITH'] équivaut à xmlhttprequest, ce qui te permettrai d'effectuer différent traitements, genre, retourner tes données parser en Json au lieu de les passer à une vue, dans le cas adéquate.

1c0c4af417423482f9528e9097ad4455?s=200&r=pg&d=mm
gounane, 01-12-2010 14:09:46 - Répondre

Bonjour,
j'ai un problème au niveau de récupération des controllers via l'url lorsque je fais cela dans le fichier .htaccess : RewriteRule ^([a-zA-Z0-9\-\_\/]*)$ index.php?p=$1
voici l’erreur affiché: The requested URL /Mvc/tutoriels/index.php was not found on this server. j'ai activé le module rewrite_module dans httpd.conf
Merci

B1482aca3bd30baa1fa20a35d9edf19d?s=200&r=pg&d=mm
Tef, 27-11-2010 18:49:35 - Répondre

Salut,
probablement un bon tuto mais j'ai été complétement largué (comme plusieurs personnes apparemment).
En fait, je comprends pas pourquoi tu ets un controller.php et model.php dans core ? Ok core c'est le fichier que tu inclus et qui inclus lui-même les autres fichiers ce qui évite l'accumulation des includes ou requires. Mais le fait qu'ils s'appelles comme ça et qu'ils ne soient pas dans les répertoires du même nom ça me largue totalement.

Pour une fois j'arrive pas à suivre un de tes tutos :P 2 Fois que j'essayes de le regarder mais je bloque à chaque fois

A+ Graf' :)

Stef

9489b12af1ba99ed48599b5294131564?s=200&r=pg&d=mm
aemaethe, 01-12-2010 22:54:52 - Répondre

Déjà core n'est pas un fichier mais un dossier. Ensuite, core va contenir le controller et le model générique. Ca permet de faire le extends dans les autres controllers.

Le dossier core sera commun à toutes les applis que tu vas développer.

D41d8cd98f00b204e9800998ecf8427e?s=200&r=pg&d=mm
DraGoN, 21-11-2010 23:44:08 - Répondre

Je trouve que le tuto est pas très clair, exemple :
Tu as un dossier Model, mais tu met model.php dans controllers ou des choses comme ça, mais tout tes tutos sont super, donc c'est surement moi qui ai mal compris

Fdd05edcd2b5c9eb95d560e35f20a363?s=200&r=pg&d=mm
Flohw, 21-11-2010 16:49:19 - Répondre

dement ! je n'avais pas compris le fonctionnement de CakePHP essentiellement parce que je n'avais jamais fait de poo ou de site sur une architecture mvc, a chaque chose que je ne comprend pas, il me faut le declic, ce tuto m'a aidé !

merci beaucoup !

Bef4e03b067062f13c62498f6c438d76?s=200&r=pg&d=mm
Franck55, 11-11-2010 18:25:56 - Répondre

Salut Graphikart,

Très bon tuto comme d'hab, par contre je me pose quand même une question au niveau du modèle mvc que tu propose, en effet si une page http://website.fr/index.php est appelé le script va planter car aucun controllers ne seras trouvé!

Je pense que tout doit ce jouer dans le dispatcher, dommage que cette partie ne soit pas expliqué.

merci encore

D41d8cd98f00b204e9800998ecf8427e?s=200&r=pg&d=mm
FiBoot, 16-11-2010 22:22:47 - Répondre

ou même http://website.fr
il n'y a pas de params[0] donc pas de controller défini.
Cela va engendrer une erreur lors du require('controllers/'.$controller.'.php');
Dommage de pas avoir plus développer le dispatcher, sinon tuto qui fait le tour des grandes lignes de l'architecture MVC, merci.

F40f837609773b5420743c7d634dff5c?s=200&r=pg&d=mm
ninux, 20-01-2011 00:10:39 - Répondre

bonjour si ca peut aider qq1 :

<?php
define('WEBROOT',str_replace('index.php','',$_SERVER['SCRIPT_NAME']));
define('ROOT',str_replace('index.php','',$_SERVER['SCRIPT_FILENAME']));

require(ROOT.'core/model.php');
require(ROOT.'core/controller.php');

mysql_connect('localhost','root','root');
mysql_select_db('tuto');

$params = array();
$params = explode('/',$_GET['p']);
if($params[0] == ''){
$controller = 'acceuil';
}else $controller = $params[0];
$action = isset($params[1]) ? $params[1] : 'index';

require('controllers/'.$controller.'.php');
$controller = new $controller();
if(method_exists($controller,$action)){
unset($params[0]); unset($params[1]);
call_user_func_array(array($controller,$action),$params);
}
else{
echo 'erreur 404';
}
?>

on peut surement améliorer hun... je n'ai qu'un petit niveau :)

C3b7f393410fe6185ba5d966a213a38f?s=200&r=pg&d=mm
Ferrassi, 10-11-2010 14:51:54 - Répondre

L'écran n'est pas clair ,merci quand même

E4e2358a9a05ea2d54c773b4ed5711e3?s=200&r=pg&d=mm
SHADAR, 31-10-2010 12:06:52 - Répondre

"var" signifie "variable" celle ci est "public" cela a ete introduit dans la version 5.xx si je me souviens bien tout comme "protected, private ect...") du genre tu faire
- protected $mavariableprotege ='protege';
- private $mavariableprivee ='privee';
- var $mavariablepubli ='public';

et il y a aussi "static" que tu peux utiliser
ex: private static $mavariableprivestatic ='variable static privé';)

voila si je me trompe n'hesitez pas a me corriger

D41d8cd98f00b204e9800998ecf8427e?s=200&r=pg&d=mm
pato, 26-10-2010 22:48:19 - Répondre

Salut tout le monde !

J'ai une petite question à poser :

A quoi correspond le type var que tu utilises dans tes classes? A vrai dire j'en avais jamais entendu parlé avant tout de suite ^^'. Je trouve bien de la doc pour public, protected et private mais pas pour var ... >.>

D41d8cd98f00b204e9800998ecf8427e?s=200&r=pg&d=mm
Devlart, 25-10-2010 14:41:40 - Répondre

Très bon tutoriel qui permet de mieux comprendre l'utilité de la POO.
Félicitation !

D41d8cd98f00b204e9800998ecf8427e?s=200&r=pg&d=mm
SHADAR, 25-10-2010 01:21:18 - Répondre

Pas mal comme petit tuto. Etant donner que je me suis lancé dans la realisation de mon framework (totalement en POO et utilisant PDO)
J'ai appris 2 3 petits trucs qui vont me servir a amelioré un peu mon code XD :)

Pour ma part j'utilise une approche differente, sous forme de "module" cad 1 dossier = 1 module contenant mon controller, mon model et ma vue.
j'utilise un syteme de template basé sur phpBB de ce fait j'ai en en plus un dossier templates/default/modules/monmodule/ ou je met mes fichiers "tpl" et j'assignes les "Tags" dans mon fichier gerant la vue en fonction des parametres passés par mon controlleur qui les recupere via le model ou autres suivant l'action demandée par le "dispatcher".

Bravo pour la qualité de tes tutos EXCELLENT !

D41d8cd98f00b204e9800998ecf8427e?s=200&r=pg&d=mm
Manserk, 24-10-2010 02:42:43 - Répondre

Bon c'est ok ! j'ai regardé le tuto htpass et comme sur le tuto j'ai creer le fichier avec notepad++ et ça marche (juste avant je l'avait crée avec le bloc note ><

si ça peu aider quelqu'un : http://www.grafikart.fr/tutoriels/securiser-htpasswd-39

D41d8cd98f00b204e9800998ecf8427e?s=200&r=pg&d=mm
Manserk, 24-10-2010 02:32:08 - Répondre

J'ai un probleme avec le .htaccess

quand j'ouvre le dossier dans le quel il est ça me dit :

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, admin@localhost and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.

je n'ai jamais utilisé de htaccess (je suis en local) j'ai essayé de modifier le fichier httpd.conf et d'autres truc trouvé sur internet mais ça ne marche pas :(

D41d8cd98f00b204e9800998ecf8427e?s=200&r=pg&d=mm
pobourger, 22-10-2010 21:39:13 - Répondre

Créer un MVC veut tout dire : Model Vu COntroller ! tout est la !

D41d8cd98f00b204e9800998ecf8427e?s=200&r=pg&d=mm
pobourger, 22-10-2010 22:16:30 - Répondre

Modèle-Vue-Contrôleur* Orthographe xD

Cff630cbbdba2a75df90a4a6223e1dbb?s=200&r=pg&d=mm
Galithiel, 22-10-2010 23:57:20 - Répondre

Oui, et d'après toi ça veut dire quelque chose en français "Créer un Modèle-Vue-Contrôleur" ? "Créer une architecture MVC" serait plus correcte...

1cd9128e99dba8370fc2698583038f94?s=200&r=pg&d=mm
jb, 11-12-2010 18:58:00 - Répondre

C'est clair que ça veut pas dire grand chose ^^

120fd3225d053986980f638a021f6e28?s=200&r=pg&d=mm
sychedelix, 30-06-2011 21:09:49 - Répondre

Plutôt crée une application selon l'architecture MVC c'est mieux, mais le titre actuelle reste cour et lisible si on à bien compris que MVC est un designe pattern.

E67b7cc62caee7f660975034ab4ba900?s=200&r=pg&d=mm
gamix91, 23-09-2011 14:05:43 - Répondre

Salut j'aime poster pour ne rien dire

Cff630cbbdba2a75df90a4a6223e1dbb?s=200&r=pg&d=mm
Galithiel, 22-10-2010 21:21:20 - Répondre

J'dis ça comme ça, mais "Créer un MVC", ça veut absolument rien dire ;)

22b3a019954e1e8a25f303a5ed555340?s=200&r=pg&d=mm
kevinrob, 21-10-2010 16:43:46 - Répondre

Bonjour,
est-ce qu'il est possible d'avoir les sources de ce tutoriel?
Merci!

318
RezA, 21-10-2010 18:52:06 - Répondre

Elles y sont, mais nécessitent un compte premium pour être téléchargées.

A4fcc374093bcb178a1568c061ddacde?s=200&r=pg&d=mm
xfiles, 21-10-2010 00:47:57 - Répondre

La vérité est là ! ;-)

318
RezA, 20-10-2010 01:58:34 - Répondre

J'ai une question :

Admettons que sur ma page j'ai plusieurs modules sur la colonne du coté droit. Du genre calendrier, dernières news, derniers tutos, et plein de trucs comme ça. Comment le gérer vu qu'on peut faire qu'une chose à la fois ?

D41d8cd98f00b204e9800998ecf8427e?s=200&r=pg&d=mm
mtrima, 20-10-2010 09:22:25 - Répondre

tu peux mieux expliquer ta question s'il te plais, qu'est-ce que tu veux dire par faire qu'une seule chose à la fois?
tu peux faire plein d'actions en même temps, il suffit d'implémenter les méthodes qui les gèrent,tu fais un model et un controller et de les inclure ou pas d'après la vue que tu veux avoir.

318
RezA, 20-10-2010 13:16:45 - Répondre

Je vais prendre un exemple simple : Donc par exemple je suis sur la page tuto. Le controller peut faire des actions en rapport avec les tutos tout comme le model. Mais je veux par exemple afficher comme sur grafikart sur chaque page une petite box avec les infos de l'utilisateur connecté et quelques liens. Donc ce que je me dis c'est que je ne peux pas mettre sur tous les controlleurs et model des actions pour ça. Et je me vois mal appeler dans un controller "tuto", le model "profil". Tu vois ce que je veux dire ?

1
Grafikart, 20-10-2010 14:09:24 - Répondre

Il faudrait créer une fonction (helper) qui permettent d'appeller une action d'un controller et qui récupèrerais le retour pour l'insérer là ou tu veux. du style
get_element('sidebar');

Tu as l'idée, faut faire le code :)

9b2db445d85458a392bc943e53a85852?s=200&r=pg&d=mm
mtrima, 20-10-2010 15:00:28 - Répondre

belle solution, j'allais te proposer un truc plus compliquer ^^

F2d9ce4e47e22e4fe7e8e58b6bfdd891?s=200&r=pg&d=mm
jerome93, 19-10-2010 19:47:04 - Répondre

Justement quand j'en ai besoin merci !

D41d8cd98f00b204e9800998ecf8427e?s=200&r=pg&d=mm
@ntonin, 19-10-2010 16:50:40 - Répondre

J'y crois pas : je recherche des informations sur l'architecture MVC et voilà un tutoriel !
Exactement ce que je cherchais : merci =)
@ntonin

D199fb98c943c7713eb042c2b027f017?s=200&r=pg&d=mm
titanshift, 19-10-2010 02:49:58 - Répondre

l'utilisation de Cakephp est devenue indispensable pour moi :)

5654
ifabe, 19-10-2010 02:39:01 - Répondre

Clair que ca a l'air plus propre... Mais j'avoue être un peu largué..

1254
Samovar, 18-10-2010 12:18:13 - Répondre

Euh, où est le tuto précendent correspondant aux fichiers [Core] ?

1
Grafikart, 18-10-2010 18:03:20 - Répondre

Cherche model dans le moteur de recherche :)

9b2db445d85458a392bc943e53a85852?s=200&r=pg&d=mm
mtrima, 18-10-2010 11:44:54 - Répondre

très bon tuto, moi qui programmer n'importe comment, je vais faire les choses plus proprement.
amicalement

Fa7f9848e02f649f6bf5d146e2467a50?s=200&r=pg&d=mm
domix24, 18-10-2010 07:09:35 - Répondre

cool!
j'en cherchait un justement!
je le mef dans mes favoris tout de suite!

80af8373a17bab3155f40011934c05fd?s=200&r=pg&d=mm
JellOwned, 18-10-2010 04:29:04 - Répondre

Merci ! J'en cherchais un en vidéo ;)

1254
Samovar, 18-10-2010 00:25:53 - Répondre

Génial ;) !

D41d8cd98f00b204e9800998ecf8427e?s=200&r=pg&d=mm
larube, 18-10-2010 00:21:05 - Répondre

Merci, quelque chose que je recherchais en ce moment !!!!!