Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

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


Recommended Posts

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

Версия 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']; ?
Я понимаю как это делать с одной единственной переменной, а вот как это сделать с добавляемыми полями в админке (как в вашем примере выше) я не знаю. 
Помогите пожалуйста!!!

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.