Перейти к содержанию
Orkh3ll0

onkeyup посылать цифры в контроллер и получить результат из функции

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

Всем добра,

 

OpencartI 3.0.2.0

 

Есть файл, это класс с функциями, которая вызвана в контроллере . Функция возвращает массив и из даты массива строится таблица. Мне нужно на `onkeyup` определенного input-а посылать значение в контроллер и возвращаться оттуда значение и это значение должно внести изменение в определенный input. Как можно ajaxom или каким то другим методом это сделать?


Мой контроллер:

require_once('catalog/controller/product/onlinecredit.php');
$credonl = new OnlineCredit();

foreach ($data['credittules'] as $rndb) {
    //echo $rndb['model'];
    $array = array(
        'Rule' => array(
            'rule_id' => $rndb['credit_rule_id'],
            'rule_name' => '' . $rndb['rule_name'] . '',
            'interest' => $rndb['interest'],
            'comission' => $rndb['comission'],
            'best_offer_downpayment' => $rndb['best_offer_downpayment'],
            'best_offer_duration' => $rndb['best_offer_duration']
        ),
        'Product' => array(
            'product_id' => $rndb['product_id'],
            'category_id' => $rndb['best_offer_duration'],
            'manufacturer_id' => $rndb['manufacturer_id'],
            'product_price' => $rndb['price']
        ),
        'Credit' => array(
            'downpayment' => $rndb['best_offer_downpayment'],
            'duration' => $rndb['best_offer_duration']
        )
    );
}

$data['credits']=$credonl->BuildCreditTable($array);

 

Мой: сторона VIEW
 

<div class="table-responsive" style="text-align: center">
   <div class="crhead"><h1 class="h1size">Hissə-hissə ödə!</h1></div>

   <table id="kreditable" width="100%">
      <thead>
      <tr>
         <th>{{ text_choise }}</th>
         <th>{{ text_vznos }}</th>
         <th>{{ text_month }}</th>
         <th>{{ text_monthly }}</th>
         <th>{{ text_total }}</th>
      </tr>
      </thead>
      <tbody>
      {% for credit_item in credits.Options %}
         <tr class="tr_row">
              {% if credit_id %}
               <td>
                  <label class="containerk">
                     <input type="radio" name="credit_id" {% if credit_item.duration == credit_id %} checked {% endif %} value="{{ credit_item.duration }}">
                     <span class="checkmarkk"></span>
                  </label>
               </td>
               {% else %}
               <td>
                  <label class="containerk">
                     <input type="radio" name="credit_id" value="{{ credit_item.duration }}">
                     <span class="checkmarkk"></span>
                  </label>
               </td>
              {% endif %}
            <td> <input type="text" class="inptsize" id="publicname-change" value="{{ credit_item.downpayment }}" onkeyup="setprice()"></td>
            <td>{{ credit_item.duration }}</td>
            <td>{{ credit_item.monthly }}</td>
            <td>{{ credit_item.total }}</td>
         </tr>
      {% endfor %}
      </tbody>
   </table>
   <div class="cb"></div>
   <a href="{{ action_credit }}&product_id={{product_id}}" class="button btn btn-cart kredit-type" onclick="kredit_click('{{ product_id }}'); return false;"/>
{{ text_nuraceiet_et }}
   </a>
</div>

 

Изменено пользователем Orkh3ll0

Поделиться сообщением


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

Дописать в контроллер на прием ajax запроса и отдачи нужных данных.

На фронте http://api.jquery.com/jquery.ajax/

https://api.jquery.com/keyup/

Но я бы не стал делать каждый запрос на каждое нажатие ajax, наверно лучше изначально предоставить какие нибудь данные в момент загрузки страницы и в массиве js их обрабатывать в зависимости от введенных данных.

Поделиться сообщением


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

Вот посылаю ajaxom на keyup
 

function setprice() {
        var downpayment = $('#publicname-change').val();

        $.ajax({
            url:'catalog/controller/product/product.php',
            type: 'POST',
            crossDomain:true,
            cache:false,
            data: {
                'action': 'get_data','price_value': downpayment
            },
            success: function(data) {

            },
            error: function(e) {
                console.log(e);

            }
        });
    }

В конроллере принимаю.

if (isset($_POST["action"]) && $_POST["action"] = "get_data" && isset($_POST["price_value"]) && $_POST["price_value"] != "") {
    echo 'число:'.$_POST["price_value"];
} else
{
	стандартная таблица без изменений инпута
}

Как не обновляя страницу теперь получить новые значения функции и заменить прошлые. Ведь значения выводится изначально через foreach

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
36 минут назад, MikeTheRaven сказал:

Пихаете все данные в массив, затем кодируете в json и выводите результат:


$data['result'] = 'Some result';

echo json_encode($data);

 

В стороне твига?

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


foreach ($data['credittules'] as $rndb) {
    //echo $rndb['model'];
    $array = array(
        'Rule' => array(
            'rule_id' => $rndb['credit_rule_id'],
            'rule_name' => '' . $rndb['rule_name'] . '',
            'interest' => $rndb['interest'],
            'comission' => $rndb['comission'],
            'best_offer_downpayment' => $rndb['best_offer_downpayment'],
            'best_offer_duration' => $rndb['best_offer_duration']
        ),
        'Product' => array(
            'product_id' => $rndb['product_id'],
            'category_id' => $rndb['best_offer_duration'],
            'manufacturer_id' => $rndb['manufacturer_id'],
            'product_price' => $rndb['price']
        ),
        'Credit' => array(
            'downpayment' => $rndb['best_offer_downpayment'],
            'duration' => $rndb['best_offer_duration']
        )
    );

}

впихнуть и заменить уже внутри?

Поделиться сообщением


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

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

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