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

помогите с переводом Twig на PHP


Xelen

Recommended Posts

Подскажите, как можно на пхп перевести такую строчку?

 

{{ attribute(_context, 'shipping_venipak_shipping_method_title_' ~ geo_zone.geo_zone_id|default(shipping_venipak_shipping_method_title) ) }}

она передается как value для поля формы

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

Цитата

if (isset(${'shipping_venipak_shipping_method_title_' . $geo_zone['geo_zone_id']})) {
echo ${'shipping_venipak_shipping_method_title_' . $geo_zone['geo_zone_id']}; {
} else {
echo $shipping_venipak_shipping_method_title;
}

 

 

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

08.12.2022 в 14:08, chukcha сказал:

 

 

Попробовала, что-то не то выходит

 

 Вот, смотрите оригинальный код для опенкарт 3, он нормально отрабатывает. Сначала показывает заглушку(default) для поля, которая прямо в коде контроллера через тернарник.

$data['venipak_shipping_method_title_' . $geo_zone_id] = $this->getParam('venipak_shipping_method_title') ?: 'Venipak';

После заполнения поля, отправляет в базу настройку shipping_venipak_shipping_method_title_(айди геозоны). И потом, при редактировании поля, там всегда то, что в этой настройке. Эта переменная естественно не одна, а создается под каждую зону. Таких полей много, это поле лишь образец.

Вот полный код одного из инпутов в твиге.

 

<input type="text"
name="shipping_venipak_shipping_method_title_{{ geo_zone.geo_zone_id }}"
value="{{ attribute(_context, 'shipping_venipak_shipping_method_title_' ~ geo_zone.geo_zone_id|default(shipping_venipak_shipping_method_title) ) }}"
id="input-shipping_venipak

 

В опенкарт 2 поменялись переменные , спереди убрала shipping_

Сейчас закинула ваш код, но мне выдает только дефолтное значение. Не понимаю, что не так в опенкарт 2, если в опенкарт 3 оно отрабатывает?

<input type="text"
name="venipak_shipping_method_title_<?php echo $geo_zone['geo_zone_id']; ?>"
value="<?php if (isset(${'venipak_shipping_method_title_' . $geo_zone['geo_zone_id']})) {echo ${'venipak_shipping_method_title_' . $geo_zone['geo_zone_id']};} else {echo $venipak_shipping_method_title;} ?>"
id="input-venipak_shipping_method_title_<?php echo $geo_zone['geo_zone_id']; ?>"
class="form-control" />

 

в базу переменная прилетает

 

 

1376147416_.png.044270d7eddb505dd158ec5806c85407.png

 

а в админке вот

 

76865144_.png.a8be5a4f077527880c5c06d55fe5644d.png

 

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

08.12.2022 в 07:28, Tom сказал:

 

Это уже пробовала, там выдает конструкцию

 

<?php echo $context[('shipping_venipak_shipping_method_title_' . isset($geo_zone['geo_zone_id'], $shipping_venipak_shipping_method_title))]; ?>

 и плюется ошибкой

 

1953087206_.png.c76541147cb24ce249b62927498ecefd.png

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

08.12.2022 в 17:30, chukcha сказал:

значит ее нет
 

 

 

Извините меня да, да я нашла почему, тут запуталась из-за разницы в названии переменных в оп3 и оп2

 

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

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

08.12.2022 в 17:35, chukcha сказал:

у вас должна существовать переменная
 

'venipak_shipping_method_title_' . $geo_zone['geo_zone_id']

 

так она создается динамически, в зависимости от зоны, и когда я отправляю текст Venipak lv, то она и создается в базе

 

867470340_.png.411a6edce4f6f5bac7394b107ddcde71.png

 

как это отрабатывает нормально в опенкарт 3?

 

насколько я понимаю, это переменная переменной, но тут у меня знания пока заканчиваются

 

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

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

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

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

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

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

Вхід

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

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

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