2009-11-19 4 views
0

Я привык работать в ASP.NET/ASP.NET MVC, и теперь для класса я должен сделать сайт PHP.Что эквивалентно Мастер-представлениям ASP.NET в PHP?

Что такое эквивалент Master Views от ASP.NET в мире PHP?

В идеале я хотел бы иметь возможность определить макет страницы с чем-то вроде:

Master.php

<html> 
    <head> 
     <title>My WebSite</title> 
     <?php headcontent?> 
    </head> 
    <body> 
     <?php bodycontent?> 
    </body> 
</html> 

и затем другие мои PHP страницы наследуют от Мастера, так что я могу вставить эти предопределенные места.

Возможно ли это на PHP?

Прямо сейчас у меня есть верхняя половина моей страницы, определяемая как «Header.html», а нижняя половина - «footer.html», и я включаю их обоих на каждую страницу, которую я создаю. Однако это не идеально, когда я хочу иметь возможность вставлять в несколько мест на моей главной странице, например, вставлять содержимое в голову.

Может ли кто-нибудь квалифицированный в PHP указать мне в правильном направлении?

ответ

0

Вы можете использовать Smarty или создать свой собственный шаблон двигателя. В принципе можно определить простой макет так:

layout.tpl:

<html> 
    <head> 
     <title>My WebSite</title> 
     {$header} 
    </head> 
    <body> 
     {$bodycontent} 
    </body> 
</html> 

определить свой заголовок:

header.tpl

<script type="text/javascript" src="js/myjs.js"></script> 

и файл содержания:

home.tpl

<div>hello {$var}! </div> 

И, наконец, ваш контроллер:

index.php

<?php 
$header = new Smarty(); 
$headerOutput = $header->fetch('header.tpl'); 

$content = new Smarty(); 
$content->assign('var', 'world'); 
$contentOutput = $content->fetch('home.tpl'); 

$layout = new Smarty(); 
$layout->display('header', $headerOutput); 
$layout->display('bodycontent', $contentOutput); 
$layout->display('layout.tpl'); 

?> 
+1

Просто скажите «нет» умению! PHP уже является языком шаблонов, почему бы вам добавить еще одну систему, чтобы узнать об этом! – notJim

+1

вы говорите «нет» Смарти, я очень им удобен. – inakiabt

+0

Smarty - это отличная экономия времени - довольно легко учиться, и многие люди тратят свое время на добавление новых функций экономии времени и закрытие дыр в безопасности без необходимости делать что-либо. Smarty также позволяет вам использовать базу шаблонов с открытым исходным кодом, которую вы можете использовать в нескольких проектах. Я использую его уже около пяти лет, и это сильно повлияло на каждый проект за счет экономии времени разработки и облегчения разделения логики/презентации. – Aligma

0

Поскольку PHP является языком программирования, а не фреймворк, он не имеет, что функциональность из коробки.

Существует много решений этой проблемы, возможно, наиболее сложным было бы использование каркаса. Есть many PHP frameworks на выбор. Недостатком было бы то, что вы изучали бы фреймворк, а не PHP.

Простым решением является использование Templating engine. Вы будете ближе к PHP, но вам все равно придется научиться использовать такой движок.

И вы уже используете простейшее решение: в том числе файлы из основного файла. Вы также можете включить файлы PHP, которые собираются выполнить, а не только статические html.

0

Если вы не хотите использовать Templating двигатель, один из решений может быть как это:

<html> 
    <head> 
     <title>My WebSite</title> 
     <?php include('headcontent'); ?> 
    </head> 
    <body> 
     <?php include('bodycontent'); ?> 
    </body> 
</html> 

И BodyContent:

<?php 
switch ($_GET['page']; 
    case 1: 
     include('page1'); 
     break; 
    case 2: 
     include('page2'); 
     break; 
} 
?> 

BodyContent будет подобно очень простой контроллер.