Например, допустим, файл представления модуля валюты currency.tpl
, Он не имеет ввода типа файла, но все еще использует форму enctype="multipart/form-data"
,
Я пытался удалить enctype
так что по умолчанию, enctype="application/x-www-form-urlencoded"
тоже работает.
Но каждая форма Opencart использует enctype="multipart/form-data"
, Что является причиной этого?
Вот валюта.tpl opencart версии 1.5.6.4
<?php if (count($currencies) > 1) { ?>
<form action="<?php echo $action; ?>" method="post" enctype="multipart/form-data">
<div id="currency"><?php echo $text_currency; ?><br />
<?php foreach ($currencies as $currency) { ?>
<?php if ($currency['code'] == $currency_code) { ?>
<?php if ($currency['symbol_left']) { ?>
<a title="<?php echo $currency['title']; ?>"><b><?php echo $currency['symbol_left']; ?></b></a>
<?php } else { ?>
<a title="<?php echo $currency['title']; ?>"><b><?php echo $currency['symbol_right']; ?></b></a>
<?php } ?>
<?php } else { ?>
<?php if ($currency['symbol_left']) { ?>
<a title="<?php echo $currency['title']; ?>" onclick="$('input[name=\'currency_code\']').attr('value', '<?php echo $currency['code']; ?>'); $(this).parent().parent().submit();"><?php echo $currency['symbol_left']; ?></a>
<?php } else { ?>
<a title="<?php echo $currency['title']; ?>" onclick="$('input[name=\'currency_code\']').attr('value', '<?php echo $currency['code']; ?>'); $(this).parent().parent().submit();"><?php echo $currency['symbol_right']; ?></a>
<?php } ?>
<?php } ?>
<?php } ?>
<input type="hidden" name="currency_code" value="" />
<input type="hidden" name="redirect" value="<?php echo $redirect; ?>" />
</div>
</form>
<?php } ?>
Зачем здесь нужно использовать multipart / form-data?
Как упомянул Фориен,
application/x-www-form-urlencoded
кодирует специальные символы (например, &
, '
, "
так далее.)
multipart/form-data
не будет кодировать любой символ. Это в основном используется для файлов (загрузки), чтобы они не испортились.
Других решений пока нет …