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

Взять в переменную для последующей обработки


Recommended Posts

Доброго времени!

Подскажите как взять в переменную php следующую конструкцию для последующей обработки

Особенно интересует участок "value"

<input type="text" name="<?php echo $product['product_id']; ?>" oninput="recalc(<?php echo $product['product_id']; ?>);" size="2" value="<?php echo $product['minimum']; ?>" maximum="<?php echo $product['quantity']; ?>" />
Змінено користувачем Alexsandrovich
Надіслати
Поділитися на інших сайтах


 

Доброго времени!

Подскажите как взять в переменную php следующую конструкцию для последующей обработки

Особенно интересует участок "value"

 

Это вьюшка, она вызывается из соответствующего контроллера. Откуда именно - ищите по названию вьюшки в папке catalog/controller. Там и ловите ваши переменные (они уже там есть).

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

Подскажите где ошибка в условии

value="<?php if (<?php foreach($product['attribute_groups'] as $attribute_group) { ?><?php foreach ($attribute_group['attribute'] as $attribute) { ?><?php if (in_array($attribute['attribute_id'], array(7))) { ?><?php if ($attr_name_show) { ?><?php echo $attribute['name']; ?>: <?php } ?><?php echo $attribute['text']; ?><?php } ?><?php } ?><?php } ?> > <?php echo $product['quantity']; ?>") { echo "<?php echo $product['quantity']; ?>";}
else { echo "<?php foreach($product['attribute_groups'] as $attribute_group) { ?><?php foreach ($attribute_group['attribute'] as $attribute) { ?><?php if (in_array($attribute['attribute_id'], array(7))) { ?><?php if ($attr_name_show) { ?><?php echo $attribute['name']; ?>: <?php } ?><?php echo $attribute['text']; ?><?php } ?><?php } ?><?php } ?>";}
Надіслати
Поділитися на інших сайтах


в писателе кода

 

не нужно пихать трехэтажные условия в value - вынесите их отдельно и передавайте итоговый результат

тогда и ошибки сразу заметны будут

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

  • 4 weeks later...

 

Подскажите где ошибка в условии

value="<?php if (<?php foreach($product['attribute_groups'] as $attribute_group) { ?><?php foreach ($attribute_group['attribute'] as $attribute) { ?><?php if (in_array($attribute['attribute_id'], array(7))) { ?><?php if ($attr_name_show) { ?><?php echo $attribute['name']; ?>: <?php } ?><?php echo $attribute['text']; ?><?php } ?><?php } ?><?php } ?> > <?php echo $product['quantity']; ?>") { echo "<?php echo $product['quantity']; ?>";}
else { echo "<?php foreach($product['attribute_groups'] as $attribute_group) { ?><?php foreach ($attribute_group['attribute'] as $attribute) { ?><?php if (in_array($attribute['attribute_id'], array(7))) { ?><?php if ($attr_name_show) { ?><?php echo $attribute['name']; ?>: <?php } ?><?php echo $attribute['text']; ?><?php } ?><?php } ?><?php } ?>";}

Уберите скобки " и все заработает

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


есть такая штука как тернарный оператор, не нужно делать такие проверки с if

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

 

 

Подскажите где ошибка в условии

value="<?php if (<?php foreach($product['attribute_groups'] as $attribute_group) { ?><?php foreach ($attribute_group['attribute'] as $attribute) { ?><?php if (in_array($attribute['attribute_id'], array(7))) { ?><?php if ($attr_name_show) { ?><?php echo $attribute['name']; ?>: <?php } ?><?php echo $attribute['text']; ?><?php } ?><?php } ?><?php } ?> > <?php echo $product['quantity']; ?>") { echo "<?php echo $product['quantity']; ?>";}
else { echo "<?php foreach($product['attribute_groups'] as $attribute_group) { ?><?php foreach ($attribute_group['attribute'] as $attribute) { ?><?php if (in_array($attribute['attribute_id'], array(7))) { ?><?php if ($attr_name_show) { ?><?php echo $attribute['name']; ?>: <?php } ?><?php echo $attribute['text']; ?><?php } ?><?php } ?><?php } ?>";}

Уберите скобки " и все заработает

 

 

 ...{ ?><?php....  зачем это ? Лучше {  foreach, и так везде почему ты открываешь и закрываешь теги php если идет обработка php кода ?

<?php echo $attribute['name']; ?>: <?php } ?><?php echo $a, этот фрагмент можно заменить так ...<?php echo $attribute['name'] . ":";  }  echo $a...

 

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


И код где можно переноси на другую строчку, используй psr
Как я читал в одной книги старайтесь делать чистый код, даст большую пользу проекту.

Автор рассказывал как программисты из компании создали по, все было хорошо популярность росла и росла, шли обновления со скоростью, а пользователи наблюдали баги и их не устраняли во время и только обновления и скором времени компания закрылась, угадай почему?

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


Подскажите где ошибка в условии

value="<?php if (<?php foreach($product['attribute_groups'] as $attribute_group) { ?><?php foreach ($attribute_group['attribute'] as $attribute) { ?><?php if (in_array($attribute['attribute_id'], array(7))) { ?><?php if ($attr_name_show) { ?><?php echo $attribute['name']; ?>: <?php } ?><?php echo $attribute['text']; ?><?php } ?><?php } ?><?php } ?> > <?php echo $product['quantity']; ?>") { echo "<?php echo $product['quantity']; ?>";}
else { echo "<?php foreach($product['attribute_groups'] as $attribute_group) { ?><?php foreach ($attribute_group['attribute'] as $attribute) { ?><?php if (in_array($attribute['attribute_id'], array(7))) { ?><?php if ($attr_name_show) { ?><?php echo $attribute['name']; ?>: <?php } ?><?php echo $attribute['text']; ?><?php } ?><?php } ?><?php } ?>";}

 

От этого кода глаза начинают кровоточить.

Ну, о том, что нельзя такую кучу кода пихать в value и что не нужно кучи открывающих и закрывающих тегов php, если там сплошной php код - уже сказали выше.

А теперь вопрос к логике этого кода.

 

Вот такое я вижу первый раз:

<?php if (<?php foreach($product['attribute_groups'] as $attribute_group) { ?>

И я не про открывающий тег php внутри php кода, а про цикл внутри условия.

 

А дальше мозг ломается ещё больше. например, вот это (круглая скобка посередине закрывает условие начатое выше):

<?php echo $product['quantity']; ?>") { echo "<?php echo $product['quantity']; ?>";}

А вот это имеет смысл только в случае множественных вариантов для сравнения:

<?php if (in_array($attribute['attribute_id'], array(7))) { ?>

Если предполагается, что значение для проверки всегда будет одно, достаточно и ==.

 

И главное - в одно value значения не могут выводиться циклом.

 

Каково назначение всего этого кода?

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


Назначение кода следующее:

При выгрузке товара из 1С передается количество товара на складе 

<?php echo $product['quantity']; ?>

и минимальное количество товара которое можно приобрести за 1 раз, но приходит оно атрибутом и вывод производится

<?php foreach($product['attribute_groups'] as $attribute_group) { ?><?php foreach ($attribute_group['attribute'] as $attribute) { ?><?php if (in_array($attribute['attribute_id'], array(7))) { ?><?php if ($attr_name_show) { ?><?php echo $attribute['name']; ?>: <?php } ?><?php echo $attribute['text']; ?><?php } ?><?php } ?><?php } ?>

В общем сравнивается количество товара на складе с минимальным количеством продажи и если количество на складе меньше количества на продажу выводится кол-во на складе.

 

Вот вывод в value на данный момент

<input type="text" name="<?php echo $product['product_id']; ?>" oninput="recalc(<?php echo $product['product_id']; ?>);" size="2" value="<?php foreach($product['attribute_groups'] as $attribute_group) { ?><?php foreach ($attribute_group['attribute'] as $attribute) { ?><?php if (in_array($attribute['attribute_id'], array(7))) { ?><?php if ($attr_name_show) { ?><?php echo $attribute['name']; ?>: <?php } ?><?php echo $attribute['text']; ?><?php } ?><?php } ?><?php } ?>" maximum="<?php echo $product['quantity']; ?>" onblur="isright(this);"/>
Змінено користувачем Alexsandrovich
Надіслати
Поділитися на інших сайтах


по идее надо как то так

Вы издеваетесь?

Вот такое работать не будет (как и строка выше, но короткая строка наглядней):

$qskl = "<?php echo $product['quantity']; ?>";

И тут просто бред! Если вам нужно передать в одну переменную значение из другой (из элемента массива в данном случае), то достаточно такого кода:

$qskl = $product['quantity'];

Только это вообще лишнее, потому что можно напрямую использовать $product['quantity'].

 

 

А здесь вы забыли символ доллара и вместо значения переменной выведется просто текст (и кавычки лишние):

echo "minp";

Этот код должен выглядеть так:

<?php
$minp = '';
foreach($product['attribute_groups'] as $attribute_group) {
    foreach ($attribute_group['attribute'] as $attribute) {
        if (in_array($attribute['attribute_id'], array(7))) {            
	    $minp = ($attr_name_show ? $attribute['name'] . ': ' : '') . $attribute['text'];
	    break;
	}
    } 
} 
echo $minp > $product['quantity'] ? $product['quantity'] : $minp;
?>

Я не знаю, то ли это, что вам надо - это просто тот же код, но в рабочем виде.

И попытайтесь его внимательно прочитать и понять, потому что то, что вы пишете - это полнейший бред

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


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

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

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

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

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

Вхід

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

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

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

Important Information

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