PHP / HTML Добавить функцию onclick в подкатегории с определенным именем - PullRequest
2 голосов
/ 03 ноября 2019

Я пытаюсь добавить функцию onclick только для определенных рекурсивно сгенерированных подкатегорий.

Этот код в настоящее время правильно отображает подкатегории:

                    <?php if($parent) { ?>
                      <?php $search_params['sCategory'] = $parent['pk_i_id']; ?>
                      <a href="<?php echo osc_search_url($search_params); ?>" class="parent active" data-name="sCategory" data-val="<?php echo $parent['pk_i_id']; ?>">
                        <span class="name"><?php echo $parent['s_name']; ?></span><em>(<?php echo ($parent['i_num_items'] == '' ? 0 : $parent['i_num_items']); ?>)</em>
                      </a>
                    <?php } ?>
                    <?php foreach($categories as $c) { ?>
                      <?php $search_params['sCategory'] = $c['pk_i_id']; ?>

                      <a href="<?php echo osc_search_url($search_params); ?>" class="child<?php if($c['pk_i_id'] == $search_cat_id) { ?> active<?php } ?>" data-name="sCategory" data-val="<?php echo $c['pk_i_id']; $
                        <span class="name"><?php echo $c['s_name'];?></span><em>(<?php echo ($c['i_num_items'] == '' ? 0 : $c['i_num_items']); ?>)</em>
                      </a>

                    <?php } ?>
                  </div>

Я хотел бы позвонить сказать functionX ();написано в JS только для подкатегории с именем "catx".

FunctionX () работает правильно, когда вызывается в другом месте где.

Я пробовал что-то подобное, но получаю белый экран:

    <?php if($search_params == "catX") {
    echo '<a onclick="functionX();" href="<?php echo osc_search_url($search_params); ?>" class="parent active" data-name="sCategory" data-val="<?php echo $parent['pk_i_id']; ?>">
      <span class="name"><?php echo $parent['s_name']; ?></span><em>(<?php echo ($parent['i_num_items'] == '' ? 0 : $parent['i_num_items']); ?>)</em>
    </a>;'
    } else {
    echo '<a href="<?php echo osc_search_url($search_params); ?>" class="parent active" data-name="sCategory" data-val="<?php echo $parent['pk_i_id']; ?>">
      <span class="name"><?php echo $parent['s_name']; ?></span><em>(<?php echo ($parent['i_num_items'] == '' ? 0 : $parent['i_num_items']); ?>)</em>
      </a>;' ?>

Довольно новичок в этом, спасибо за помощь!

Ответы [ 2 ]

0 голосов
/ 04 ноября 2019

Это не подход, который работает для всех, но в этом сценарии я нахожу визуально полезным (и очень полезным, если мне нужно что-то отладить), чтобы постепенно наращивать строку, используя

  • операторы
  • переменные;и
  • условные операторы

и затем echo строка, как только я ее построю.

Пример:

<?php

$Item_Number = ($parent['i_num_items'] === '') ? 0 : $parent['i_num_items'];

$Link = '';
$Link .= '<a ';

if ($search_params === 'catX') {

  $Link .= 'onclick="functionX();" ';
}

$Link .= 'href="'.osc_search_url($search_params).'" class="parent active" data-name="sCategory" data-val="'.$parent['pk_i_id'].'">';
$Link .= '<span class="name">'.$parent['s_name'].'</span>';
$Link .= '<em>('.$Item_Number.')</em>';
$Link .= '</a>';

echo $Link;

?>
0 голосов
/ 04 ноября 2019

Когда вы используете echo, вы используете ', чтобы указать границы того, что вы собираетесь выводить.

В вашем коде у вас есть эхо 'Некоторый контент', но ваш контент содержит ' также. Имени: $parent['pk_i_id']

Есть несколько способов сделать это. Вот пример ( Конкатенация ):

echo '<a onclick="functionX();" href="' . osc_search_url($search_params) . '">Click me</a>'; // ...

Встроенная запись полезна, если у вас есть HTML-код:

<b>My name is<?php echo $name ?></b>

Просто не смешивайтеem:)

...