вопрос бегинера по smarty

AlbertTheII

Новичок
вопрос бегинера по smarty

решил попробовать, уже на старте стали получатся вот такие вот шаблоны:
Код:
{* Smarty *}
{assign var=CurrentTeamID value=null}
{foreach from=$Developers key=stub item=CurrentDeveloper}
	{assign var=IterationTeamID value=$CurrentDeveloper->GetVariable('TeamID')}
	{if $CurrentTeamID != $IterationTeamID}
		<p class="listheader">{$CurrentDeveloper->GetVariable('Team')}</p>
		{assign var=CurrentTeamID value=$IterationTeamID}
	{/if}
	<p class="list"><a href="">{$CurrentDeveloper->GetName()}</a></p>
{/foreach}
шанс, что работающие со мной девочки дизайнеры смогут такое написать очень близок к 0, проще обучить их PHP ;)
я что-то не понимаю в смарти ?
 

hermit_refined

Отшельник
Хм... Скажем так, если вы избавитесь от объектов, польза от которых в этом шаблоне крайне сомнительна, и будете отдавать только массивы, то вы значительно облегчите жизнь своим девочкам, которые - к тому же - будут видеть получаемые от вас данные в Smarty Debug Console.
 

AlbertTheII

Новичок
я могу, конечно, массив объектов заменить на многомерный массив, но, что-то у меня есть сомнения, что это коренным образом изменит читаемость шаблона.
 

hermit_refined

Отшельник
Отчего ж? Вы вполне можете отдавать данные так, чтобы шаблон упростился, например, до следующего:
PHP:
{foreach from=$Teams item=CurrentTeam}
	<p class="listheader">{$CurrentTeam.Name}</p>
	{foreach from=$CurrentTeam.Developers item=CurrentDeveloper}
		<p class="list"><a href="">{$CurrentDeveloper.Name}</a></p>
	{/foreach}
{/foreach}
P.S. Общая идея такова - вместо того, чтобы отдавать просто кучу объектов, привести данные в строгий иерархический порядок, соответствующий логике массивов. Девелоперы, отсортированные по TeamID - это вообще всякая потеря логики, и дизайнеру надо городить огород, чтобы эту логику восстановить. Другое дело - Teams, содержащие девелоперов.
 

AlbertTheII

Новичок
с одной стороны, да, с другой, если вдруг выяснится, что шаблон должен отобразить ещё какую-нибудь информацию (телефон, эл. почту, ...), то мне придётся переделывать метод возвращающий список девелоперов, что не приведёт меня в восторг :)

то есть ваш шаблон получает уже специальным образом организованную информацию, т.е. тот, кто передаёт её уже как бы знает как она будет отображаться. я же хотел отдать всю информацию, а потом дизайнеры с ней пусть что хотят, то и делают ;)
 

hermit_refined

Отшельник
Если требуется, можно поступить более гибко - отдать массив Teams, каждая из которых содержит массив из DeveloperId (и ключом имеет свой Id), и массив Developers, каждый из которых также имеет ключом свой Id. А метод вам всё равно придётся переделывать - например, чтобы сортировать девелоперов по-другому.

Вы хотите взвалить почти всю логику на шаблон, чтобы модель передавалась в представление, оно бы с ним крутилось как хотело, а контроллер лежал на диване. И после этого говорите, что дескать шаблон получается слишком сложным, и девочки не разберутся!..
 

AlbertTheII

Новичок
ок, принято, спасибо за разъяснения.

но некоторые вопросы остались:
я предположил, что если на странице есть много элементов, то задача контроллера получить от моделей нужную информацию и передать её в шаблоны, если при этом контроллер будет знать логику отображения каждого элемента, то он будет немного перегружен. т.е. если сегодня дизайнеры считают, что нужно отображать девелоперов по группе, а завтра решат, что правильно по алфавиту, то нужно будет менять данные передаваемые в шаблон, мне казалось, в исходном варианте они могут это сделать без меня, хотя для них это и может стать сложной задачей.
 
Сверху