Как это вывести с помощью smarty?
В общем, есть код:
servers - выводит список серверов.
groups - список товаров.
Как сделать так, чтобы при смене сервера менялись и товары которые находятся в select?

public function servers() {
return $this->query("SELECT * FROM `servers` WHERE `status` = 1");
}
public function groups($server) {
$groups = $this->query("SELECT * FROM `groups` WHERE `server` = ".(int)$server." ORDER BY `id` ASC");
$donate = array();
while($group = $groups->fetch_object()) {
if(!is_array($donate[$group->category])) $donate[$group->category] = array();
$donate[$group->category][] = $group;
}
return $donate;
}
В шаблонизаторе вот так (smarty версии 3):
$smarty->assign('servers', $core->servers());
$smarty->assign('groups', $core->groups($server['id']));
html:
<div class="col-md-6">
<ul class="nav nav-tabs" role="tablist">
{foreach from=$servers item=$server}
<li class="nav-item" role="presentation"><a href="#tab{$server.id}" {if $server.id==1} class="nav-link active" {/if} class="nav-link" role="tab" data-toggle="tab">{$server.name}</a></li>
{/foreach}
</ul>
<div class="panel panel-default" style="border-top-left-radius: 0px;border-top-right-radius: 0px;">
<div class="panel-body">
<div class="tab-content">
{foreach from=$servers item=$server}
<div role="tabpanel" {if $server.id==1} class="tab-pane active" {/if} class="tab-pane" id="tab{$server.id}">
<form action="/" method="post" id="forma"><input type="hidden" name="server_id" class="input-server_id" value="{$server.id}">
<div class="alert alert-dismissible alert-warning">
Вы выбрали сервер: {$server.name}
</div>
<div class="form-group has-feedback">
<label for="nick" class="control-label">Введите ваш ник:</label>
<input type="text" class="input-nick form-control" name="nickname" id="nickname" placeholder="Введите ник">
</div>
<div class="form-group">
<label for="group" class="control-label">Выберите товар:</label>
<select id="group" name="group" class="form-control" required="">
<option selected disabled>Выберите товар</option>
{foreach from=$groups item=$list key=$category}
<optgroup label="{$category}">
{foreach from=$list item=$group}
<option value="{$group->id}">{$group->name} - {$group->price} руб.</option>
{/foreach}
</optgroup>
{/foreach}
</select>
</div>
<button type="submit" name="buy" id="buy" class="submit buy btn btn-info" disabled="">Купить</button>
</form>
</div>
{/foreach}
</div>
</div>
</div>
</div>
Ответы (1 шт):
Автор решения: teran
→ Ссылка
на стороне пхп вы вбираете данные и передаете их в шаблонизатор, а-ля
$groups = $this->groups($server['id']);
$smarty->assign('groups', $groups);
$smarty->render(...);
в шаблоне юзаете, что передали. Если смарти 3й версии, то
{foreach $groups as $category => $list}
<optgroup label="{$category}">
{foreach $list as $group}
<options value="{$group.id}">{$group.name} - {$group.price} руб.</option>
{/foreach}
</optgroup>
{/foreach}