Новости Joomla

0 Пользователей и 1 Гость просматривают эту тему.
  • 28 Ответов
  • 561 Просмотров
*

warlocksp

  • Завсегдатай
  • 1198
  • 17 / 4
Добрый день,
Подскажите пожалуйста,
С условиями не получается, вывода.

Добавил "Пользователи: Поля" - "training-programs" (тип "checkboxes")
Ввел: course1, course2, course3

Добавил к пользователю "Test" - "course1", "course3"

Выводит:
Код
<?php
$additionalFields = array();
foreach($customFields as $field) {
$additionalFields[$field->name] = $field->value;
}

 if (isset($additionalFields['training-programs']) and !empty($additionalFields['training-programs'])) :?>
<?php echo $additionalFields['training-programs']; ?>
<?php endif; ?>

Не могу прописать условия:
Если есть "course1" - то выводит <div></div>, иначе "0"
Если есть "course2" - то выводит <div></div>, иначе "0"
Если есть "course3" - то выводит <div></div>, иначе "0"

Как правильно прописать?

Подскажите пожалуйста, может было решение - не нашел.
Слабоват в php.

« Последнее редактирование: 09.12.2020, 17:57:29 от warlocksp »
Мудр не тот, кто знает много, а тот, чьи знания полезны. Эсхил
*

draff

  • Гуру
  • 5803
  • 434 / 7
  • ищу работу
Код
switch($field->value)
{
    case 'course1':
    case 'course2':
    case 'course3':
        echo '<div></div>';
    break;
    default:
      echo "0";
    break;
}

« Последнее редактирование: 09.12.2020, 18:41:39 от draff »
*

warlocksp

  • Завсегдатай
  • 1198
  • 17 / 4
Код
switch($field->value)
{
    case 'course1';
    case 'course2';
    case 'course3';
        echo '<div></div>';
    break;
    default;
      echo "0";
    break;
}

Выводит только по default = "0".

Если не сложно можете не оптимизировать код.
Что то не так делаю.


Мудр не тот, кто знает много, а тот, чьи знания полезны. Эсхил
*

draff

  • Гуру
  • 5803
  • 434 / 7
  • ищу работу
Была ошибка, переписал. Но проверьте, есть нужные значения в $field->value или нет .
https://www.php.net/manual/ru/control-structures.switch.php
Код
switch($field->value)
{
    case 'course1':
    case 'course2':
    case 'course3':
        echo '<div></div>';
    break;
    default:
      echo "0";
    break;
}
п.с.
Хотя не ошибка, пишут что допустимо
Цитировать
Возможно использование точки с запятой вместо двоеточия после оператора case.
« Последнее редактирование: 09.12.2020, 19:49:31 от draff »
*

warlocksp

  • Завсегдатай
  • 1198
  • 17 / 4
Была ошибка, переписал. Но проверьте, есть нужные значения в $field->value или нет .
https://www.php.net/manual/ru/control-structures.switch.php
Код
switch($field->value)
{
    case 'course1':
    case 'course2':
    case 'course3':
        echo '<div></div>';
    break;
    default:
      echo "0";
    break;
}

Код
  ["form":protected]=>
  object(Joomla\CMS\Form\Form)#359 (6) {
    ["data":protected]=>
    object(Joomla\Registry\Registry)#357 (3) {
      ["data":protected]=>
      object(stdClass)#338 (7) {
        ["com_fields"]=>
        object(stdClass)#505 (1) {
          ["training-programs"]=>
          array(2) {
            [0]=>
            string(7) "course1"
            [1]=>
            string(7) "course3"
          }
        }

Мудр не тот, кто знает много, а тот, чьи знания полезны. Эсхил
*

warlocksp

  • Завсегдатай
  • 1198
  • 17 / 4
Код
array(2) {
  [0]=>
  string(7) "course1"
  [1]=>
  string(7) "course3"
}

Все перепроверил - все равно 0
Не могу понять - пожалуйста, может что то пропускаю.

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

gartes

  • Завсегдатай
  • 1859
  • 142 / 6
  • Е = mс²
какой код должен вставить для вывода.

так что выводит ?
Код
echo'<pre>';print_r( $field );echo'</pre>'.__FILE__.' '.__LINE__;
die(__FILE__ .' '. __LINE__ );
*

gartes

  • Завсегдатай
  • 1859
  • 142 / 6
  • Е = mс²
тут $field->value наверное массив
тогда так 
Код
foreach ( $field->value as $value )
{
    echo in_array( $value ,  ['course1','course2','course3',])? '<div></div>' : '0' ;
}#END FOREACH
Хотя код от draff тоже правильный  только немного изменить
Код
foreach ( $field->value as $value )
{
    switch( $value )
    {
         case 'course1':
         case 'course2':
         case 'course3':
              echo '<div></div>';
         break;
         default:
            echo "0";
         break; // тут можно эту строку не ставить
    }
}#END FOREACH
*

warlocksp

  • Завсегдатай
  • 1198
  • 17 / 4
Не срабатывает,

$value = NULL


В поле "$field->value" массив:
Код
array(2) {
  [0]=>
  string(7) "course1"
  [1]=>
  string(7) "course3"
}

Если есть "course1" - вы вести  echo '<div>1</div>';
Если есть "course2" - вы вести  echo '<div>2</div>';
Если есть "course3" - вы вести  echo '<div>3</div>';
Мудр не тот, кто знает много, а тот, чьи знания полезны. Эсхил
*

warlocksp

  • Завсегдатай
  • 1198
  • 17 / 4
СПАСИБО БОЛЬШОЕ
разобрался
Мудр не тот, кто знает много, а тот, чьи знания полезны. Эсхил
*

warlocksp

  • Завсегдатай
  • 1198
  • 17 / 4
Все работает отлично, не могу - найти как это устранить (линяя запись), на скриншоте выделили красной линией ?
Спойлер
[свернуть]


Мудр не тот, кто знает много, а тот, чьи знания полезны. Эсхил
*

draff

  • Гуру
  • 5803
  • 434 / 7
  • ищу работу
Добавил "Пользователи: Поля" - "training-programs"
не могу - найти как это устранить (линяя запись),

Похоже на имя поля, нужно искать в макете .
п.с.
А в параметрах должная быть опция отключения
Код
<?php if ($showLabel == 1) : ?>
<span class="field-label <?php echo $labelClass; ?>"><?php echo htmlentities($label, ENT_QUOTES | ENT_IGNORE, 'UTF-8'); ?>: </span>
<?php endif; ?>
« Последнее редактирование: 10.12.2020, 11:10:54 от draff »
*

warlocksp

  • Завсегдатай
  • 1198
  • 17 / 4
Похоже на имя поля, нужно искать в макете .
Да это моя ошибка была, ваш скрипт вставлял - после моего, а там - не заметил. После поменял местами и все заработало.
$additionalFields[$field->name]

Можете подсказать по последнему посту, лишняя запись вылазет.
Мудр не тот, кто знает много, а тот, чьи знания полезны. Эсхил
*

warlocksp

  • Завсегдатай
  • 1198
  • 17 / 4
Похоже на имя поля, нужно искать в макете .
п.с.
А в параметрах должная быть опция отключения
Код
<?php if ($showLabel == 1) : ?>
<span class="field-label <?php echo $labelClass; ?>"><?php echo htmlentities($label, ENT_QUOTES | ENT_IGNORE, 'UTF-8'); ?>: </span>
<?php endif; ?>

Уже побывал,
Это "training-programs-course1" - из скрипта php, в админки этого значение вообще нет.
Спойлер
[свернуть]
Мудр не тот, кто знает много, а тот, чьи знания полезны. Эсхил
*

draff

  • Гуру
  • 5803
  • 434 / 7
  • ищу работу
Это "training-programs-course1" - из скрипта php, в админки этого значение вообще нет.
Хм, выводит имя позиции. Тогда пропишите
Код
//$position   = 'training-programs-course1';
echo $renderer->render("training-programs-course1", $options, null);
*

warlocksp

  • Завсегдатай
  • 1198
  • 17 / 4
Хм, выводит имя позиции. Тогда пропишите
Код
//$position   = 'training-programs-course1';
echo $renderer->render("training-programs-course1", $options, null);

нет изменений, когда остальные модули выводишь - в остальных позициях (training-programs-course2, training-programs-course3) - тоже самое:
"training-programs-course1" - название остается, кроме первого модуля.

Что то не закончено, действия - заново проходи его.
Мудр не тот, кто знает много, а тот, чьи знания полезны. Эсхил
*

gartes

  • Завсегдатай
  • 1859
  • 142 / 6
  • Е = mс²
Привет всем !
warlocksp
Ваша трабла в том что Вы не знаете как посмотреть то - что у вас происходит ..
вы же == Мудр не тот, кто знает много, а тот, чьи знания полезны понимаете смыл слов !! ))
Код
$document   = &JFactory::getDocument(); // так не нужно делать ! с по моему 4 php !
дело в том что JFactory является сингилтоном ! ))) - но то ладно !! ))
Слушай ну кто ? - Вам так писать сказал !! )))  === точно не на форуме !
твой код должен быть таким  :
Код
$doc  = \Joomla\CMS\Factory::getDocument();
$renderer   = $doc->loadRenderer('modules');
$options    = array('style' => 'xhtml');

foreach ($field->value as $value)
{
    switch($value)
    {
        case 'course1':
            $position   = 'training-programs-course1';
            echo $renderer->render($position, $options, null);
            break;
        case 'course2':
            $position   = 'training-programs-course2';
            echo $renderer->render($position, $options, null);
            break;
        case 'course3':
            $position   = 'training-programs-course3';
            echo $renderer->render($position, $options, null);
            break;
        case 'course4':
            $position   = 'training-programs-course4';
            echo $renderer->render($position, $options, null);
            break;
        case 'course5':
           $position   = 'training-programs-course5';
            echo $renderer->render($position, $options, null);
            break;
        case 'course6':
            $position   = 'training-programs-course6';
            echo $renderer->render($position, $options, null);
            break;
        default:
            # я бы тут die добавил .... нк то тоже ладно ! :)
            // die(__FILE__ .' '. __LINE__ );
            echo "";
    }
}#END FOREACH




« Последнее редактирование: 10.12.2020, 12:01:37 от gartes »
*

gartes

  • Завсегдатай
  • 1859
  • 142 / 6
  • Е = mс²
Напиши когда Сделаете !
и посмотрим что у вас не так !
*

warlocksp

  • Завсегдатай
  • 1198
  • 17 / 4
Ничего не изменилось, а эмоций сколько.
Правильно не на этом форуме:
Вывод позиции модуля не в index.php
« Последнее редактирование: 10.12.2020, 12:33:21 от warlocksp »
Мудр не тот, кто знает много, а тот, чьи знания полезны. Эсхил
*

gartes

  • Завсегдатай
  • 1859
  • 142 / 6
  • Е = mс²
Ничего не изменилось, а эмоций сколько.
  :laugh:
Ну ок !
Давайте смотреть что не так !!
Заменяем пока -- моим кодом ваш !!
Код
$doc  = \Joomla\CMS\Factory::getDocument();
$renderer   = $doc->loadRenderer('modules');
$options    = array('style' => 'xhtml');

foreach ($field->value as $value)
{
    switch($value)
    {
        default:
            echo'<pre>';print_r( $value );echo'</pre>'.__FILE__.' '.__LINE__;
            die(__FILE__ .' '. __LINE__ );
    }
}#END FOREACH
Что Видим ??
*

warlocksp

  • Завсегдатай
  • 1198
  • 17 / 4
Ошибка в строке:
die(__FILE__ .' '. __LINE__ );
Мудр не тот, кто знает много, а тот, чьи знания полезны. Эсхил
*

gartes

  • Завсегдатай
  • 1859
  • 142 / 6
  • Е = mс²
*

warlocksp

  • Завсегдатай
  • 1198
  • 17 / 4
Нет !!
До нее что то есть  ?
То нормально!

В начале и в конце текст, который вставляется в другие позиции.

Минуту, вот смотрите - весь блок кода:
Спойлер
[свернуть]

Позиции вверху и внизу - отрабатывает четко.
'training-programs-top';
'training-programs-bottom';

А выводит 'training-programs-course1' только switch($value)
Мудр не тот, кто знает много, а тот, чьи знания полезны. Эсхил
*

gartes

  • Завсегдатай
  • 1859
  • 142 / 6
  • Е = mс²
Прости меня конечно !
И спасибо за плюс !!
но ты Дятел ?
Код
<?php foreach ($field->value as $value)
{
    switch($value)
{
Ты кинул в итерацию  foreach - это  switch($value) а где условия ?? )))
Не обижайся ! )) Я прошу !!
*

gartes

  • Завсегдатай
  • 1859
  • 142 / 6
  • Е = mс²
Не я конечно понимаю что я могу быть : Хамом , Тварью или просто Экспрессивный человек
Но поверьте == то что вы делаете это похоже как слепой котенок тыкается и не понимает где он ! ))
мой скайп : Олег Николайчук agroparknew
Звони ! Я помогу !!
*

warlocksp

  • Завсегдатай
  • 1198
  • 17 / 4
Прости меня конечно !
И спасибо за плюс !!
но ты Дятел ?
Код
<?php foreach ($field->value as $value)
{
    switch($value)
{
Ты кинул в итерацию  foreach - это  switch($value) а где условия ?? )))
Не обижайся ! )) Я прошу !!


На обиженных воду возят :)
Мудр не тот, кто знает много, а тот, чьи знания полезны. Эсхил
*

warlocksp

  • Завсегдатай
  • 1198
  • 17 / 4
Да, вот это ошибка, вообще про тормозил,

Сотни раз смотрел модули, которые выводятся в этой позиции - не видел ошибки. Их просто скопировал в месте с мусором.
"training-programs-course1"

Все кто помогал большое спасибо, админы - тему удалите пожалуйста.

Мудр не тот, кто знает много, а тот, чьи знания полезны. Эсхил
*

gartes

  • Завсегдатай
  • 1859
  • 142 / 6
  • Е = mс²
Парень ! - Позвонил !! И мы нашли ошибку ! )) == собственно он ее туда написал ! ))  *DRINK*
*

gartes

  • Завсегдатай
  • 1859
  • 142 / 6
  • Е = mс²
Все кто помогал большое спасибо, админы - тему удалите пожалуйста.
А я бы не стал ! Удалять !
Тебе помогли ! - то и другим людям помогут! == Так строится Дружба ! ))
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

J3. Программное добавление пользователя

Автор AlekVolsk

Ответов: 49
Просмотров: 3437
Последний ответ 20.04.2020, 20:24:27
от web3.0
Переопределение поля типа list

Автор denism300

Ответов: 8
Просмотров: 2239
Последний ответ 12.10.2016, 23:03:13
от denism300
Друзья почему поля формы приходят пустыми

Автор maxpolsky

Ответов: 2
Просмотров: 1159
Последний ответ 28.11.2015, 19:50:18
от passer
Выборка данных с использование массива в качестве условия

Автор AlekVolsk

Ответов: 2
Просмотров: 931
Последний ответ 10.01.2015, 00:27:06
от AlekVolsk
Выбор группы пользователя при регистрации (аутентификации)

Автор Bartleby

Ответов: 10
Просмотров: 1712
Последний ответ 05.06.2013, 14:20:36
от Bartleby