Создаю свой класс (расширение функционала ручного внесения оплат).
1. Создал таблицу
2. Описал класс
3. Делаю контроллер
Дошел до функции RenderForm и уперся в одно поле:
В новой таблице оплат есть поле id_customer (привязать к оплате Покупателя)
Для его вывода в форме добавления / редактирования в контроллере пишу по аналогии с другими контроллерами
$this->fields_form = array(
'tinymce' => true,
'legend' => array(
'title' => $this->l('Manufacturers'),
'icon' => 'icon-certificate'
),
'input' => array(
array(
'type' => 'select',
'label' => $this->l('Плательщик'),
'name' => 'id_customer',
'required' => false,
'options' => array(
'query' => customer::getCustomers(),
'id' => 'id_customer',
'name' => 'lastname'
)
),
....
Все работает, на экране появляется дропбокс со списком всех клиентов, выбрать можно, сохранить и т.д.
НО, это очень не удобно в списке искать глазами клиента и выбирать его
Хочу вместо select вставить text, чтобы потом привязать к нему js поиск по имени (как в поиске товара или при создании заказа в ручную и выборе клиента).
Так вот - меняю
array(
'type' => 'select',
на
array(
'type' => 'text',
и в поле, где при select стоит Имя, теперь стоит id клиента, потому что в файле \admin\themes\default\template\helpers\form\form.tpl для $input.type == 'text' не предусмотрено
'options' => array(
.
Поэтому придется править tpl, добавляя новый вариант типа {if $input.type == 'my_text_with_search'}
Занялся этим, запутался и мой мозг слегка треснул.
Может кто-нибудь подскажет совет как это сделать? Для удобства я убрал все "лишние" проверки и получилось следующее:
{elseif $input.type == 'my_text_with_search'}
{assign var='value_text' value=$fields_value[$input.name]}
<input type="text"
name="{$input.name}"
id="{if isset($input.id)}{$input.id}{else}{$input.name}{/if}"
value="{$value_text|escape:'html':'UTF-8'}"
/>
{/if}