Темплейт таблуации

dakata__92

Super Moderator
Колеги от кодът в този коментар (мой) http://web-tourist.net/forum/viewtopic.php?t=128760&postdays=0&postorder=asc&start=0#667819
системата си работи, но когато започвам да инклудвам файловете се получава липса на таблуации. Не ми се иска да въвеждам в темплейтовете различни таблуации и да се чудя къде какво става, а някак си автоматично да го правя. Предполагам че ще е нещо такова:
PHP:
<?php print "\t\t\t";?>
но незнам как да засичам колко \t трябва да добавям в render() метода от линка.
Например в момента нещата ми се получават така:
HTML:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>Admin</title>
<link href="http://localhost/Classes/Admin/Model/Css/progress-bar-circle.css" rel="stylesheet">
<link href="http://localhost/Classes/Admin/Model/Css/navigation.css" rel="stylesheet">
</head>
<body>
<header>
Home page<br><nav>
<ul>
<li><a  class='active' href='http://localhost/Classes/Admin/' >Index</a></li>
<li><a href='http://localhost/Classes/Admin/performance/' >performance</a></li>
<li><a href='http://localhost/Classes/Admin/dashboard/' >dashboard</a></li>
<li><a href='http://localhost/Classes/Admin/edit/' >edit</a></li>
</ul>
</nav>
</header>
<main>
<div class="progress-bar-circle" data-percent="75"></div></main>
<footer>
<script src="http://localhost/Classes/Admin/Model/JavaScript/progress-bar-circle.js"></script>
</footer>
</body>
</html>

А ми се иска да е нещо такова:

HTML:
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8" />
		<title>Admin</title>
		<link href="http://localhost/Classes/Admin/Model/Css/progress-bar-circle.css" rel="stylesheet">
		<link href="http://localhost/Classes/Admin/Model/Css/navigation.css" rel="stylesheet">
	</head>
<body>
	<header>
		Home page<br><nav>
			<ul>
				<li><a  class='active' href='http://localhost/Classes/Admin/' >Index</a></li>
				<li><a href='http://localhost/Classes/Admin/performance/' >performance</a></li>
				<li><a href='http://localhost/Classes/Admin/dashboard/' >dashboard</a></li>
				<li><a href='http://localhost/Classes/Admin/edit/' >edit</a></li>
			</ul>
		</nav>
	</header>
	<main>
		<div class="progress-bar-circle" data-percent="75"></div>
	</main>
	<footer>
		<script src="http://localhost/Classes/Admin/Model/JavaScript/progress-bar-circle.js"></script>
	</footer>
</body>
</html>
 
teroristd каза:
PHP_EOL, \t :idea:
Това е ясно, но според теб
PHP:
public function render($__file, Array $__data = Array())
	{
		if (!$this->__isFileExists($__file)) {
			throw new \Exception("File not exists or it is not readable!");
		}
		ob_start();
		if ($__data) {
			extract($__data);
		}
		include $__file;
		$__outputBuffer = ob_get_contents();
		ob_end_clean();
		return $__outputBuffer.PHP_EOL ;
	}

рендера връща резултата:
PHP:
return $__outputBuffer.PHP_EOL ;
и ако добавя "\t" в началото на стринга таблуира веднъж първият ред. Със
PHP:
return str_replace("\n","\t".PHP_EOL,$__outputBuffer).PHP_EOL;
таблуира веднъж но инклуднатите файлове не се показват допълнително навътре. Тоест не се получава както искам и реално незнам как да го направя. Не че ми е много как ще е подреден кода, но реално погледнато, ако желая нещата да са качествено направени трябва да реша този проблем. Все пак работната рамка която си написах ще я ползвам в собствени проекти и е хубаво и изходнияд код в браузъра да е добре структуриран.
 
Така ти е супер кода, не се занимавай с глупости.
Даже е добре да го минеш и през един HTML minifier.
Потребителя му е през *** как е подреден кода, него го интересува всичко да става възможно най-бързо.
 
uphero каза:
Така ти е супер кода, не се занимавай с глупости.
Даже е добре да го минеш и през един HTML minifier.
Потребителя му е през *** как е подреден кода, него го интересува всичко да става възможно най-бързо.
Защо да го минавам през Minifer? Има ли някаква файда да го сбивам в браузъра така?
 
Ти в смите файлове, които инклудваш, правиш ли табулации на таговете? Един вид подреждаш ли си хтмл-а, или пишеш всичко едно под друго?
 
teroristd каза:
Ти в смите файлове, които инклудваш, правиш ли табулации на таговете? Един вид подреждаш ли си хтмл-а, или пишеш всичко едно под друго?

Eдно под друго. Реално не мисля че там е мястото да правя таблуации, при положение, че темплейта може да се ползва в различни вътрешно тагови комбинации. Тоест не е логично да бия в темплейта 3 таблуации и после да ми се наложи да го извикам някъде където е нужна само една таблуация. Това е най-лесният варянт пробвах го и с еподрежда кода но не е това начинат. Търся автоматизирано решение. Как във фреймове като Laravel, Zend това е решено като проблем? Просто трещът таблуации в темплейтовете или имат система да го прави?
 
Нямам голям опит с ларавел или зенд но си мисля че няма такова нещо за което говориш. По скоро си зависи от редактора на който пишеш. Ако отвориш в нотепад едва ли ще ти подреди кода автоматично. Аз например съм с нетбинс и там можеш да си настроиш да ти форматира кода.
 
teroristd каза:
Нямам голям опит с ларавел или зенд но си мисля че няма такова нещо за което говориш. По скоро си зависи от редактора на който пишеш. Ако отвориш в нотепад едва ли ще ти подреди кода автоматично. Аз например съм с нетбинс и там можеш да си настроиш да ти форматира кода.

Колега, редактора не ме бърка. Искам в браузъра View Source да е подреден добре при сглобяването на кода. Предполагам че във работните рамки вероятно ползват таблуации в темплейтите. Това е най-лесното решение но дали някой не е писал Таблуационен клас. :)
 
dakata__92 каза:
teroristd каза:
Нямам голям опит с ларавел или зенд но си мисля че няма такова нещо за което говориш. По скоро си зависи от редактора на който пишеш. Ако отвориш в нотепад едва ли ще ти подреди кода автоматично. Аз например съм с нетбинс и там можеш да си настроиш да ти форматира кода.

Колега, редактора не ме бърка. Искам в браузъра View Source да е подреден добре при сглобяването на кода. Предполагам че във работните рамки вероятно ползват таблуации в темплейтите. Това е най-лесното решение но дали някой не е писал Таблуационен клас. :)

Няма такъв клас в Ларавел. Вземи отвори два произволни сайта правени с Ларавел и виж сорса. Аз отворих няколко и навсякъде форматирането е различно, а дори в единия е като при теб. Всичко е едно под друго.

</head>
<body class='home'>
<div class='mobile-menu-wrap'>
<ul class='mobile-menu'>
<li>
<a href='/'>Home</a>
</li>
<li>
<a href='/blog'>Blog</a>
</li>
<li>
 
teroristd каза:
dakata__92 каза:
teroristd каза:
Нямам голям опит с ларавел или зенд но си мисля че няма такова нещо за което говориш. По скоро си зависи от редактора на който пишеш. Ако отвориш в нотепад едва ли ще ти подреди кода автоматично. Аз например съм с нетбинс и там можеш да си настроиш да ти форматира кода.

Колега, редактора не ме бърка. Искам в браузъра View Source да е подреден добре при сглобяването на кода. Предполагам че във работните рамки вероятно ползват таблуации в темплейтите. Това е най-лесното решение но дали някой не е писал Таблуационен клас. :)

Няма такъв клас в Ларавел. Вземи отвори два произволни сайта правени с Ларавел и виж сорса. Аз отворих няколко и навсякъде форматирането е различно, а дори в единия е като при теб. Всичко е едно под друго.

</head>
<body class='home'>
<div class='mobile-menu-wrap'>
<ul class='mobile-menu'>
<li>
<a href='/'>Home</a>
</li>
<li>
<a href='/blog'>Blog</a>
</li>
<li>

Преди време бях попаднал на един regex с preg_replace който матчваше всичко между таговете и прибавяше \t. Пробвах се да напиша такъв реплейсър но не матчвам правилно. Идеята ми е между всеки таг да матчна резултата и да прибавя таблуация. Поне на теория съм го виждал, но на практика не.

PHP:
$__outputBuffer = preg_replace("/\<.+?\>[\d\D]\<\/.+?\>/iu","\t$1",$__outputBuffer);

Не сработва regex-а но според мен е напълно възможно да стане преди принтирането просто да наслагам таблуациите автоматично в стринга и той да ги изпълнява при принтиране.
 
А и не е работа на фреймуорка да върши подобни работи. За това са редакторите, в които имаш стотици опциии да си форматираш кода.
 
@teroristd
Това си зависи дали си задал да го минифицира html-а или не, по принцип laravel не го пипа, както и сам ще се убедиш като видиш сорса на laravel.com
 
Еми точно това казвам и аз :) . По принцип не е уместно поне според мен фреймуорка да добавя табулации и нови редове. Защото няма как да знае аз как искам да си подредя кода.
 
По между другото преди време и аз бях почнал да си пиша един клас, хтмл хелпер, в който идеята ми беше чрез разни методи да си генерирам хтмл, но е голяма хамалогия. Има прекалено много варианти, тагове и глупости и в крайна сметка го зарязах :D .
 
teroristd каза:
Еми точно това казвам и аз :) . По принцип не е уместно поне според мен фреймуорка да добавя табулации и нови редове. Защото няма как да знае аз как искам да си подредя кода.

Махни го фрейма какво прави или не. Ще го напиша като библиотека кода да филтрира, просто матчвам всичко но не ми зачита таблуацията...

PHP:
$__outputBuffer = preg_replace("/\<([^!].+?)\>([\d\D]*)\<\/(.+?)\>/iu","<$1> \t $2</$3>",$__outputBuffer);

Както казах фрейма си ги подрежда една под друга защото така инкдудва файловете а там аз така съм ги оставил. Просто желая в случаят да ги таблуирам, но вместо да променям всеки един файл просто да го преподредя преди принтирането. Тоест ще си напиша Модел/Библиотека/ Класс ViewSource и ще връщам към фрейма от контролерите да принтира към главният преден контролер подреденият текст. Просто в момнета за най-лесно слагам рендера тук иначе там няма да пипам грам. Просто преди от контролера на страницата да пратя респонда към главният контролер за принтиране, ще филтрирам стринга и ще добавям таблуациите (поне на теория ми се иска да е така). Тоест с горният код се опитвам да постигна това а фрейма реално няма нищо общо с това аз как искам да го принтирам в браузъра.
 
lam3r4370 каза:
Недей.
Значи имам следната структура:

Код:
+ Framework/
   - Settings/
   - System/
       - Core/
       - Library/
   - Index.php
-----------------
+ Model  
    - Controller/
    - Library/
----------
-index.php

Папката работна рамка реално там ми е ядрото там ми е библиотеката на фрейма и прочие, фронт контролер и други.
Папката Модел съдържа в Controller контролерите на страниците подадени в рутерите (Home, Edit класовете и др.) а в библиотеката в моделите ще стоят всичките ми нужни класове дали ще е навигацията UserLogin и прочие далеч от кода на работната рамка. Тоест приложението ми като се отвори ще има 2 папки Framework и Model заедно със стартиращият файл и от там нататък в Модел мисля да са Css Jss и прочие, като там ще се структурира кода на сайта а работната рамка ще е отделно в друга папка за да не се обърква юзъра при подръжката.
 

Back
Горе