🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.php
Article #232195

Re: PHPStorm - jak tworzyć wzorce HTML?

#232195
From: Marek S
Date: Sat, 22 Dec 2018 19:48
107 lines
4926 bytes
W dniu 2018-12-19 o 02:45, Kviat pisze:

> Jeżeli mam pięć różnych podstron na których znajdują się newsy, i w tych 
> newsach trzeba coś zmienić, to zmianę nanoszę tylko w jednym pliku, a 
> nie w pięciu plikach z szablonami tych pięciu podstron.
> 
> Potrzeba zmienić coś w stopce - zmieniam widok stopki. Robię to raz, w 
> jednym pliku, a nie w kilkudziesięciu plikach.
> Nie muszę mieć żadnego narzędzia do "updejtowania" zmian na 
> kilkadziesiąt plików.

Dobra, to od początku, Ja również nie jestem w swoim podejściu 
zobligowany do aktualizowania wszystkich plików - mogę jeden i będzie 
działało, ale kompletnie nie o to chodzi. Zobrazuję to na konkretnym 
przykładzie. Niech istnieje projekt:

<html>
<head>
...
<head>
<body>
<div>ten blok jest dla view #1<div>
<div>ten blok jest dla view #2<div>
<footer>to jest stopka będąca de facto view #3</footer>
</body>
</html>

Teraz np. w Laravelu robi się jak poniżej "Twoim sposobem":

Layout jest taki:
<html>
<head>
@yield("content1")
@yield("content2")
@yield("content3")
<head>
<body>

Plik view (w uproszczeniu - bez angażowania się w obsługę kontrolerów 
itp) będzie następujące:

@extends("home")
@section("content1")
<div>ten blok jest dla view #1<div>
@endsection("content")

@section("content2")
<div>ten blok jest dla view #2<div>
@endsection("content2")

@section("content3")
<footer>to jest stopka będąca de facto view #3</footer>
@endsection("content3")

Skupmy się na powyższym kodzie. Przychodzi do pracy Webdesigner, który 
nie ma pojęcia a PHP i frameworkach. Domyśla się, że trzeba zachować 
magiczne zaklęcia w kodzie HTML. Otwiera powyższy kod i niczego nie 
widzi bo dokument nie jest w pełni wartościowym dokumentem. A komu 
szkodziłoby zrobienie czegoś takiego jak niżej?

<html>
<head>
...
<head>
<body>
@extends("home")
@section("content1")
<div>ten blok jest dla view #1<div>
@endsection("content")

@section("content2")
<div>ten blok jest dla view #2<div>
@endsection("content2")

@section("content3")
<footer>to jest stopka będąca de facto view #3</footer>
@endsection("content3")
<head>
<body>

Taki kod zadziała i we frameworku i nieobyty w programowaniu webdesigner 
zobaczy pełny układ strony w swoim edytorze wysiwyg. Będzie mógł 
wizualnie w nim grzebać. W moim podejściu byłoby stworzenie kodu jak 
powyżej, zapisanie go gdzieś na boku projektu (nie uploadowany folder na 
serwer produkcyjny), dokonywanie zmian na tym jednym pliku, bo żywcem 
widzimy w nim wszelkie sekcje, a potem propagowanie zmian po wszystkich 
100 viewsach bazujących na tym projekcie.

Intencja jest taka, że narzędzie programistyczne takie jak DW potrafi 
propagować zmiany w poszczególnych sekcjach z zachowaniem tego czym we 
viewsach te sekcje zostały wypełnione. Czyli jeśli viewsy zawierają 
specyficzne znaczniki typu @section("content3"), to DW je tam pozostawi.

Aby było jeszcze klarowniej: webdesigner zmieni <div>ten blok jest dla 
view #2<div> na <div class="dupa">ten blok jest dla view #2<div>, to 
tylko zmieni się ten div a znaczniki charakterystyczne dla frameworku 
pozostaną nietknięte.

W niczym nie przeszkadza uzupełnianie kodu każdego viewsa o dodatkowy 
kod HTML. Usprawnia to także tworzenie viewsów bo w przypadku gdy 
webdesigner zmieni <div> na <cokolwiek> to programista musiałby we 
wszystkich viewsach to zmienić ręcznie. A po co skoro może w zamian nic 
nie robić?

-- 
Pozdrawiam,
Marek
Technical Details
Message-ID: <pvm4e7$p27$1@node2.news.atman.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!.POSTED!not-for-mail
References: <pv45bb$8vm$1@node1.news.atman.pl> <e1vd3rwlb1yl.1qwmmqrtxl9ut.dlg@40tude.net> <pv5r8u$smv$1@node1.news.atman.pl> <5c16773c$0$488$65785112@news.neostrada.pl> <pv5u9f$vk9$1@node1.news.atman.pl> <5c1687c1$0$476$65785112@news.neostrada.pl> <pv680u$6bj$1@node2.news.atman.pl> <5c16cdd6$0$485$65785112@news.neostrada.pl> <pv99hk$qb$1@node2.news.atman.pl> <5c18bce4$0$474$65785112@news.neostrada.pl> <pvbmlv$8tv$1@node2.news.atman.pl> <5c19a2ac$0$492$65785112@news.neostrada.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!.POSTED!not-for-mail
From: Marek S <precz@spamowi.com>
Newsgroups: pl.comp.lang.php
Subject: Re: PHPStorm - jak tworzyć wzorce HTML?
Date: Sat, 22 Dec 2018 20:48:21 +0100
Organization: ATMAN - ATM S.A.
Lines: 107
Message-ID: <pvm4e7$p27$1@node2.news.atman.pl>
References: <pv45bb$8vm$1@node1.news.atman.pl> <e1vd3rwlb1yl.1qwmmqrtxl9ut.dlg@40tude.net> <pv5r8u$smv$1@node1.news.atman.pl> <5c16773c$0$488$65785112@news.neostrada.pl> <pv5u9f$vk9$1@node1.news.atman.pl> <5c1687c1$0$476$65785112@news.neostrada.pl> <pv680u$6bj$1@node2.news.atman.pl> <5c16cdd6$0$485$65785112@news.neostrada.pl> <pv99hk$qb$1@node2.news.atman.pl> <5c18bce4$0$474$65785112@news.neostrada.pl> <pvbmlv$8tv$1@node2.news.atman.pl> <5c19a2ac$0$492$65785112@news.neostrada.pl>
NNTP-Posting-Host: 89-70-94-204.dynamic.chello.pl
Mime-Version: 1.0
X-Trace: node2.news.atman.pl 1545508103 25671 89.70.94.204 (22 Dec 2018 19:48:23 GMT)
X-Complaints-To: usenet@atman.pl
NNTP-Posting-Date: Sat, 22 Dec 2018 19:48:23 +0000 (UTC)
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.3.3
In-Reply-To: <5c19a2ac$0$492$65785112@news.neostrada.pl>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit