Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MkFramework Discussion :

Besoin d'aide pour démarrer


Sujet :

MkFramework

  1. #1
    Membre à l'essai
    Besoin d'aide pour démarrer
    Salut a tous,


    J'ai toujours utilisé mon propre (petit) framework pour mes projets.
    Niveau sécurité il ne tient pas la route, et il a d'autres nombreuses lacunes.
    Après avoir repoussé à plus tard l'utilisation d'un vrai framework, j'ai décidé d'utiliser .... MkFramework (bon ok, y'avait pas trop de suspens).

    Mais voila dés le départ je me trouve confronté à un problème d'organisation.
    Même si je pense avoir compris le principe du modèle MVC, j'ai du mal à l'appliquer concrètement pour mon projet.

    Pour faire simple, si on prend un site composé de 4 parties
    1 - header + footer (fixe)
    2 - Menu
    3 - partie gauche (depend des actions utilisateurs)
    4 - partie droite (affiche une boite pour se connecter, ou des liens en fonctions des droits si l'internaute est connecté).

    Quand l'internaute arrive sur l'index, la partie gauche doit afficher une liste d'articles.

    Comment est-ce que cela se traduit en termes de layout et de modules ?
    Le simple fait d'arriver directement sur la liste d'articles sur la page d'accueil me pose problème.
    Est-ce que je dois modifier la partie [navigation] du site.ini ?

    Et si je dois avoir une liste d'articles à gauche et une liste d'auteurs à droite, ca se concrétise comment ?
    je suis dans le module article ou le module auteurs ?

    J'ai regardé plusieurs fois les tutos (en particulier les episodes 19 et 20) j'ai étudié aussi les schémas, mais c'est pas plus clair.

    Je precise que j'arrive quand même à créer les modules indépendamment.
    Mais impossible d'assembler le tout !

    Voila, ca a l'air tout bête mais je patauge complètement, et du coup je pars dans tout les sens sans rien faire de concret.



    Merci pour votre aide.

  2. #2
    Rédacteur

    En effet les tutos 19 et 20 auraient du repondre à vos questions

    Dans un layout, on definit des "placeholder": des emplacements qui afficherons certaines parties du site

    par exemple, par défaut, le template fourni contient deux placeholder:

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    <?php echo $this->load('main') ?>


    et

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    <div class="menu"><?php echo $this->load('menu') ?></div>


    vous pouvez en ajouter autant que vous voulez

    Pour votre exemple d'articles, je vous préconise de creer un nouveau template, par exemple layout/articles.php

    Et on ajouterait donc une partie à gauche du "main" pour afficher ce menu d'articles, par exemple en l'appelant "menu2" (ou autre)

    Donc
    1. on creer un layout special pour l'affichage à gauche des titres des articles, et à droite l'article affiché

    Code php :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <div class="main">
    	<div class="menu"><?php echo $this->load('menu') ?></div>
    	<div class="content">
     
    		<div style="float:left;width:300px"><?php echo $this->load('menu2') ?></div>
     
    		<?php echo $this->load('main') ?>
    	</div>
    </div>


    2. on modifie le module article pour indiquer d'afficher dans cet emplacement "menu2" la liste des articles

    a. on creer une methode qui retournera une vue contenant la liste des articles
    Code php :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public function getListArticles(){
    		$tArticles=model_articles::getInstance()->findAll();
     
    		$oView=new _view('articles::menulist');
    		$oView->tArticles=$tArticles;
     
    		return $oView;
    	}

    Avec la vue en question
    Code php :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    <ul>
    	<?php if($this->tArticles)<img src="images/smilies/icon_confused.gif" border="0" alt="" title=":?" class="inlineimg" />>
    		<?php foreach($this->tArticles as $oArticles)<img src="images/smilies/icon_confused.gif" border="0" alt="" title=":?" class="inlineimg" />>
     
     
    		<li><a href="<?php echo $this->getLink('articles::show',array('id'=>$oArticles->getId()
    									) 
    							)?>"><?php echo $oArticles->titre ?></a></li>
     
     
     
     
    		<?php endforeach;?>
    	<?php else<img src="images/smilies/icon_confused.gif" border="0" alt="" title=":?" class="inlineimg" />>
    		<li>Aucune ligne</li>
    	<?php endif;?>
    </ul>


    b. on indiquer dans le before d'appeler cette methode pour ajouter cette vue à l'emplacement menu 2
    Code php :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public function before(){
    		$this->oLayout=new _layout('articles');
     
    		$oViewArticles=$this->getListArticles();
     
    		$this->oLayout->add('menu2',$oViewArticles);
    		//$this->oLayout->addModule('menu','menu::index');
    	}


    et voila
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  3. #3
    Membre à l'essai
    Merci pour tes exemples, mais j'avais bien compris ces different points.

    Je re-explique mon soucis en essayant d’être plus clair :

    Ce que j'ai appelé partie gauche c'est en fait la partie principale du site (pas un menu a gauche).
    Assez classiquement quand on arrive sur mon site je veux que les derniers articles soient affichés directement.

    Ce qui me pose soucis c'est de le traduire en terme de module et d'action.

    On doit être dans le module:article , action:list ?
    Et je dois modifier la partie [navigation] du site.ini pour arriver directement sur ce module et cette action ? (au lieu du classique default/index)

    Et si sur la même page je dois afficher une liste d'article, une liste d'auteurs, une liste d'animaux, une liste ...
    Je suis dans quel module ?




    J'en profite pour poser un autre question,
    Quelle est la difference entre "module" et "module intégrable" sur le builder ?



    Merci beaucoup pour ton aide

  4. #4
    Rédacteur

    Oui pour la navigation par défaut , il faut en effet configurer la section navigation

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    [navigation]
    scriptname=index.php
    var=:nav
    module.default=article
    action.default=list


    Pour l'histoire d'une page affichant à la fois une liste d'auteur, d'articles... vous pouvez en effet vous orientez vers un module regroupant plusieurs autres modules

    Soit en utilisant les modules embarquées dont le but est d'etre affiché au sein d'un autre module

    ou soit, comme vu plus haut, utiliser simplement les place holder

    L'important etant que les parties de sites provenant d'ailleurs doivent utiliser une methodes retournant cette vue

    L'idée c'est d'ajouter des objets vue dans le layout

    Note: pour rappel: oLayout->add() ajouter une vue au layout: elle l'ajoute, elle ne la remplace pas, vous pouvez appelez plusieurs fois cette méthode, elle ajoutera les vues les unes en dessous des autres

    note: vous pouvez tres bien avoir un seul et unique module qui contient tout, mais c'est plus simple à organiser/maintenir ainsi
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

###raw>template_hook.ano_emploi###