2012-05-18 13 views
5

Jak tworzyć strony wzorcowe w php? Podobnie jak Layout.cshtml (i RenderBody()) w ASP.NET MVC?Implementowanie funkcjonalności stron głównych. PHP

Dzięki!

P.S. Może do tego celu służy narzędzie innej firmy?

EDIT

Ok. Rzecz nie dotyczy architektury MVC! Wyglądają tutaj: http://jsfiddle.net/challenger/8qn22/109/

  1. I want the master page/layout to stay when user gets redirected to the other page
  2. Want an average page to be nested inside the content division. So if it is a form I want this form to be displayed like:http://jsfiddle.net/challenger/XgFGb/17/
+0

Czy używasz jakichkolwiek frameworków w PHP? PHP nie ma żadnego MVC po wyjęciu z pudełka, więc musisz wybrać framework, który jest MVC, i przez większość czasu mają one własny silnik "layout/templating". Spójrz na Code Igniter, Kohana, Sympfony, itp. – allaire

+0

Nie biorę pod uwagę wzorca MVC. Wszystko, czego potrzeba, to koncepcja stron wzorcowych. – lexeme

+0

Cóż, w porównaniu do ASP.NET, który jest MVC, więc zorientowałem się, że potrzebujesz jakiegoś silnika mvc ... – allaire

Odpowiedz

1

Off strony, wiem, że Laravel framework zawiera Blade templating engine. Używa składni bardzo podobnej do Razor.

przykład:

@layout('master') 

@section('navigation') 
    @parent 
    <li>Nav Item 3</li> 
@endsection 

@section('content') 
    Welcome to the profile page! 
@endsection 

(żyletka Blade, loller łyżwy)

1

W PHP jest bardzo podobna technika zwana szablonów. Zamiast strony wzorcowej masz szablon. Sam język nie ma żadnych wbudowanych funkcji szablonów, ale istnieją również silniki szablonowe (Smarty, PHPTAL i XTemplate, aby wymienić tylko kilka).

Jeśli chcesz mieć "prawdziwe" strony wzorcowe, można je całkowicie wdrożyć. Po prostu zawiń stronę wzorcową do klasy i dołącz() tę klasę do swoich stron z treścią.

Również Zend Framework obsługuje widok dwuetapowy, w którym szablon widoku jest renderowany wewnątrz szablonu układu. Myślę, że to zaspokoi twoją potrzebę tworzenia stron wzorcowych.

patrz poniższe linki:

  1. Approximating Master Pages in PHP
  2. Is there anything like MasterPages on CodeIgniter Framework?
  3. PHP Equivalent of Master page in ASP.NET
  4. ASP.Net MVC or Zend Framework. What is your opinion
  5. http://hoolihan.net/blog-tim/2008/09/24/simple-masterpages-with-php/
6

Oto w Hat Standardowy framework PHP/api obsługuje:

Funkcja require("/definitions.php") ładuje klasę, funkcję i stałe definiuje z pliku i wyprowadza zawartość poza kodem PHP do php: // stdout (na serwerze internetowym jest to, co jest wysyłane do przeglądarka). Możesz użyć require_once do importowania zależności (pliki php z definicjami).

Użyj znaczników otwierających i zamykających PHP, aby uzyskać informacje zbliżone do funkcji szablonów. Na przykład normalny strona będzie wyglądać następująco: normal page

natomiast wliczone (i powtarzalnie includable) można wyglądać następująco: enter image description here

nie mówię „nie wolno używać silników szablonów” , pokazując jasny i prosty sposób na osiągnięcie celów, dla których PHP jest celowo zbudowany. Jeśli jest to wystarczające dla ciebie, wtedy mówię "nie używaj silników szablonów dla dobra tego" (btw, jeśli jesteś czysty, możesz łatwo oddzielić logikę od widoków, bez ścisłych, a czasami uciążliwych frameworków MVC).

1

Szablon silnik Gałązka oferuje Template Inheritance

Najmocniejsza część Gałązka jest dziedziczenie szablonów. Dziedziczenie szablonów pozwala zbudować podstawowy szablon "szkieletu", który zawiera wszystkie typowe elementy witryny i definiuje bloki, które szablony potomne mogą zastępować.

Może być używany jako samodzielny, ale został stworzony przez użytkowników popularnych popularnych symfony framework.

1

Jakiś czas temu (kilka lat), I osiągnąć coś takiego przy użyciu Smarty i rozszerzenie go zawierać metodę efektu DisplayMaster („NameOfTemplate”, „NameOfMasterTemplate”)

Działa poprzez renderowanie szablon i przekazanie wyniku do innego (głównego) szablonu.

Powyższy ma 2 szablony: NameOfTemplate, ma tylko główną sekcję zawartości, np.

<div>...{$someProcessing}</div> 

NameOfMasterTemplate posiada zewnętrzną html

<html>...<body><div class="layout">{$innerHtml}</div></body></html> 
1

Dodaj ten kawałek kodu w obszarze zawartości pliku master.php ... Używam go w ten sposób i to działa idealnie dla mnie

<li><a href="master.php?page=blog.php">BLOG</a></li>

<div class="container content"> 

    <?php 
    if(isset($_GET['page'])) 
    { 
     $page_name = $_GET['page']; 
     include("/".$page_name); 
    } 
    ?> 
    </div> 
Powiązane problemy