2009-09-26 5 views
0

Je cherche à créer une belle façon de séparer vue et contrôleur en php. Ce que je voudrais arriver est que les gens iraient à: localhost/index.php? View = inscrivez-vous et ils verraient toute la page avec une boîte d'inscription .. et pas une boîte de connexion.Réflexions sur la création d'un sélecteur de vue en php

Je me demande si quelqu'un a déjà fait cela ... Je suis particulièrement à la recherche d'une façon élégante de laisser Javascript gérer les peaux et les spectacles après le chargement initial de la page par php. Alors peut-être quelque chose comme ceci:

<div class="login" style="display:<?php echo $login; ?>;"> 

L'astuce est que je veux la valeur par défaut (localhost/index.php) pour tout afficher. Donc, si? View = .. n'est pas défini, puis montrer tout .. Je ne veux vraiment pas encombrer ma vue avec une tonne de if instructions avec isset() ..

Faites-moi savoir vos solutions à ce problème !

Merci, Matt Mueller

+1

Soit mon niveau de caféine est trop faible, ou le vôtre est trop haut ... 8) Pourriez-vous être un peu plus clair? –

+0

J'ai réécrit quelques sections .. C'est une question difficile, car mon code ne sera pas compris dans les extraits. J'espère avoir quelqu'un qui a fait ce que j'essaye de faire avant. – Matt

+1

Je triche un peu avec ce genre de chose. Essentiellement, je montre seulement la boîte de connexion sous un titre de 'login/register here'. Si le système reconnaît la paire nom d'utilisateur/mot de passe, il enregistre l'utilisateur, sinon il demande s'il souhaite enregistrer un compte sous ce nom d'utilisateur. Il semble que * * fonctionne bien ... –

Répondre

1

Il suffit de faire quelque chose comme ceci: (rien à voir avec CSS)

<?php 

// login.php 

if(strtolower($_GET['v']) == 'signup'){ 

?> 
<form>/* sign up form goes here */</form> 
<?php 

}else{ 

?> 
<form>/* login form goes here */</form> 
<?php 


} 

?> 

Ou vous auriez pu utiliser le commutateur/select si vous avez trop de pages dans un Fichier php:

<?php 

// login.php 

switch(strtolower($_GET['v'])){ 

case 'signup': 
?> 
<form>/* sign up form goes here */</form> 
<?php  
break; 

default:  
?> 
<form>/* login form goes here */</form> 
<?php 
break; 

} 

?> 

Cheerio!

MISE À JOUR: en ce qui concerne la capacité d'utiliser AJAX, vous pouvez faire quelque chose comme ceci:

<?php 

// login.php 

$_showcontent = false; 
if(isset($_GET['c'])){$_showcontent = true;} 

if(!$_showcontent){ 
    // load the header, javascript components and whatever so on 
    echo '<div id="view">'; 
} 

switch(strtolower($_GET['v'])){ 

case 'signupstep1': 
?> 
<a href="#view" onclick="return go_step2();">Step 2</a> 
<?php  
break; 

case 'signupstep2': 
?> 
<form>/* sign up form goes here */</form> 
<?php  
break; 

case 'signupcomplete': 
?> 
    /* sign up complete page */ 
<?php  
break; 

default:  
?> 
<a href="#view" onclick="return go_signup();"></a> 
<?php 
break; 

} 

if(!$_showcontent){ 
    echo '</div>';  
    // footer and what other stuff you need here 
} 

?> 

Le code Javascript:

<script type="text/javascript"> 
/* <![CDATA[ */ 

function go_signup(){ 
    $("#view").load("<?php echo $_SERVER['PHP_SELF'] ?>?c&v=signupstep1"); 
    return false; 
} 

function go_step2(){ 
    $("#view").load("<?php echo $_SERVER['PHP_SELF'] ?>?c&v=signupstep2"); 
    return false; 
} 

/* ]]> */</script> 
+0

Merci pour votre temps .. le seul problème est que j'en ai besoin pour pouvoir réagir à javascript par la suite. Si PHP ne charge pas les éléments, javascript ne peut pas réagir lorsque je clique sur les boutons de connexion/inscription. À l'heure actuelle, si vous cliquez sur "inscription" après la page chargée? View = login, alors il va disparaître la boîte de connexion, et fondu dans la boîte d'inscription. – Matt

+0

Je ne comprends toujours pas ce que vous essayez d'accomplir. – yoda

+0

Il veut toujours que tous les éléments soient chargés sur la page, mais seulement celui qui est sélectionné quand la page est chargée. Il veut être capable de cacher/montrer les éléments après la pageload via JS. Soit vous pouvez définir l'affichage CSS comme vous l'avez mentionné dans votre question, soit vous pouvez également laisser AJAX gérer la commutation des vues et demander au contrôleur de cracher le code HTML approprié en fonction de l'entrée GET de l'AJAX. – BraedenP

Questions connexes