私がやろうとしているのはこれです:
しかし、それに失敗しています。私が使用しようとしたコードは次のとおりです。
<td class="nowrap center">
<div class="btn-group">
<?php echo JHtml::_('jgrid.published', $row->state, $i, 'records.', true, 'cb'); ?>
<?php echo JHtml::_('jgrid.published', ((int) $row->state === 2 ? 1 : 2), $i, 'records.', true, true, 'cb'); ?>
<?php echo JHtml::_('jgrid.published', ((int) $row->state === -2 ? 1 : -2), $i, 'records.', true, true, 'cb'); ?>
</div>
</td>
そしてまた試み:
<td class="nowrap center">
<div class="btn-group">
<?php echo JHtml::_('jgrid.published', $row->state, $i, 'records.', true, 'cb'); ?>
<?php echo JHtml::_('jgrid.state', JHtml::_('grid.publishedOptions'), ((int) $row->state === 2 ? 1 : 2), $i, 'records.', true, true, 'cb'); ?>
<?php echo JHtml::_('jgrid.state', JHtml::_('grid.publishedOptions'), ((int) $row->state === -2 ? 1 : -2), $i, 'records.', true, true, 'cb'); ?>
</div>
</td>
これをもう一度調査する必要があり、私は解決策を見つけたようです。
以下の例でjgrid.published
を使用してレンダリングされた公開ボタンと同じです。
<?php echo JHtml::_('jgrid.published', $row->state, $i, 'myitems.', true, 'cb', $row->publish_up, $row->publish_down); ?>
代わりに、より汎用的なjgrid.action
レンダーを使用してください。これは、joomlaライブラリで次のように定義されています。
public static function action($i, $task, $prefix = '', $text = '', $active_title = '', $inactive_title = '', $tip = false, $active_class = '',
$inactive_class = '', $enabled = true, $translate = true, $checkbox = 'cb')
jgrid.published
とは異なり、このレンダラーは単一の固定タスクを持つボタンを作成します。これは状態を認識しません。つまり、現在の状態に基づいてタスクを自動的に割り当てることはできません。ただし、if-else
コードラッパーを使用して、表示するボタンを制御することにより、常にその動作を模倣できます。