Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...

Модуль для вывода любого кол-во полей в админке


comrues
 Поделиться

Рекомендованные сообщения

Есть ли такой модуль который сгенерирует нужные мне поля? которые я смогу вывести в админку?
Эту нужно, что бы администратор мог редактировать кастомный контент не залезая в код.

Версия ocStore 3.0.2.0

Ссылка на комментарий
Поделиться на других сайтах


Вы думаете, что чем больше тем вы наплодите, тем больше шансов на успех?

Для массива полей модуля в контроллере пишем

if (isset($this->request->post['extension_name_value']))
    $data['extension_name_value'] = $this->request->post['extension_name_value'];
else
    $data['extension_name_value'] = $this->config->get('extension_name_value');

 

а в шаблоне делаем так:

<!-- вывод массива -->
{% set len=extension_name_value|length %}
{% set i=0 %}{% for i in (i..len) %}    
    <tr>
        <td><input class='form-control' name='extension_name_value[{{ i }}]' value='{{ extension_name_value[i] }}'></td>
        <td><div  class='text-center' onclick="removeRow(this);"><i class="fa fa-times fa-2x" aria-hidden="true"></i></div></td>
    </tr>            
{% endfor %}

<!-- кнопка добавить -->
<td class='text-center'><div onclick='addRow(this);'><i class="fa fa-plus-circle fa-2x" aria-hidden="true"></i></div></td>

<!-- скрипт добавления/удаления -->
<script>
    function addRow(el)
    {
        $(el).parents('table').find('tbody').append("<tr><td><input class='form-control' name='extension_name_value[]'></td><td><div  class='text-center' onclick='removeRow(this);'><i class='fa fa-times fa-2x' aria-hidden='true'></i></div></td></tr>");
        return false;
    }
    function removeRow(el)
    {
        $(el).parents('tr').remove();
        return false;

    }
</script>

получим что-то вроде такого:

maf.jpg.3a2fe49a139c4e83c76e4c5e8fe825ad.jpg

Пользуйтесь

 

Ссылка на комментарий
Поделиться на других сайтах

Огромное спасибо! :eek: 

55 минут назад, LiLu сказал:

Вы думаете, что чем больше тем вы наплодите, тем больше шансов на успех?

Для массива полей модуля в контроллере пишем


if (isset($this->request->post['extension_name_value']))
    $data['extension_name_value'] = $this->request->post['extension_name_value'];
else
    $data['extension_name_value'] = $this->config->get('extension_name_value');

 

а в шаблоне делаем так:


<!-- вывод массива -->
{% set len=extension_name_value|length %}
{% set i=0 %}{% for i in (i..len) %}    
    <tr>
        <td><input class='form-control' name='extension_name_value[{{ i }}]' value='{{ extension_name_value[i] }}'></td>
        <td><div  class='text-center' onclick="removeRow(this);"><i class="fa fa-times fa-2x" aria-hidden="true"></i></div></td>
    </tr>            
{% endfor %}

<!-- кнопка добавить -->
<td class='text-center'><div onclick='addRow(this);'><i class="fa fa-plus-circle fa-2x" aria-hidden="true"></i></div></td>

<!-- скрипт добавления/удаления -->
<script>
    function addRow(el)
    {
        $(el).parents('table').find('tbody').append("<tr><td><input class='form-control' name='extension_name_value[]'></td><td><div  class='text-center' onclick='removeRow(this);'><i class='fa fa-times fa-2x' aria-hidden='true'></i></div></td></tr>");
        return false;
    }
    function removeRow(el)
    {
        $(el).parents('tr').remove();
        return false;

    }
</script>

получим что-то вроде такого:

maf.jpg.3a2fe49a139c4e83c76e4c5e8fe825ad.jpg

Пользуйтесь

 

Вы ЧУДО!!!! (в очень хорошем смысле). Я весь день убил на то что бы найти это решение!

Ссылка на комментарий
Поделиться на других сайтах


59 минут назад, LiLu сказал:

Вы думаете, что чем больше тем вы наплодите, тем больше шансов на успех?

Для массива полей модуля в контроллере пишем


if (isset($this->request->post['extension_name_value']))
    $data['extension_name_value'] = $this->request->post['extension_name_value'];
else
    $data['extension_name_value'] = $this->config->get('extension_name_value');

 

а в шаблоне делаем так:


<!-- вывод массива -->
{% set len=extension_name_value|length %}
{% set i=0 %}{% for i in (i..len) %}    
    <tr>
        <td><input class='form-control' name='extension_name_value[{{ i }}]' value='{{ extension_name_value[i] }}'></td>
        <td><div  class='text-center' onclick="removeRow(this);"><i class="fa fa-times fa-2x" aria-hidden="true"></i></div></td>
    </tr>            
{% endfor %}

<!-- кнопка добавить -->
<td class='text-center'><div onclick='addRow(this);'><i class="fa fa-plus-circle fa-2x" aria-hidden="true"></i></div></td>

<!-- скрипт добавления/удаления -->
<script>
    function addRow(el)
    {
        $(el).parents('table').find('tbody').append("<tr><td><input class='form-control' name='extension_name_value[]'></td><td><div  class='text-center' onclick='removeRow(this);'><i class='fa fa-times fa-2x' aria-hidden='true'></i></div></td></tr>");
        return false;
    }
    function removeRow(el)
    {
        $(el).parents('tr').remove();
        return false;

    }
</script>

получим что-то вроде такого:

maf.jpg.3a2fe49a139c4e83c76e4c5e8fe825ad.jpg

Пользуйтесь

 

Огромное спасибо!

Ссылка на комментарий
Поделиться на других сайтах


В 06.07.2020 в 19:39, LiLu сказал:

Для массива полей модуля в контроллере пишем

Скажите пожалуйста, а как правильно всё это вывести в catalog/view ??? Я так понимаю, что просто указать переменную {{ extension_name_value }} не вариант.
И достаточно ли будет в catalog/controller объявить её так - $data['extension_name_value'] = $setting['extension_name_value']; ?
Я понимаю как это делать с одной единственной переменной, а вот как это сделать с добавляемыми полями в админке (как в вашем примере выше) я не знаю. 
Помогите пожалуйста!!!

Ссылка на комментарий
Поделиться на других сайтах


Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
 Поделиться

×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.