添加 CSS class 作为 PHP 循环的变量
Adding CSS class as a variable for PHP loop
我有一个 PHP 函数,它接受一个使用重力流过滤的 table。此函数循环遍历 table 的每一行。我想更改此 table 的样式。我有一个特定的 CSS class 我想要 table 样式。这个class就是"tr-shadow"。我会将此 CSS class 应用于 table 的每一行。我有一个用于 CSS 的 $style 变量。如何将 CSS class 添加为 $style 变量的字符串,以便 table 可以从 class 中打印出 CSS?这是下面的代码。
'''
public function single_row_columns( $item ) {
list( $columns, $hidden ) = $this->get_column_info();
foreach ( $columns as $column_name => $column_display_name ) {
$class = "class='$column_name column-$column_name'";
$style = "class='tr-shadow'";
if ( in_array( $column_name, $hidden ) ) {
$style = "class='tr-shadow'";
}
$data_label = ( ! empty( $column_display_name ) ) ? " data-label='$column_display_name'" : '';
$attributes = "$class$style$data_label";
if ( 'cb' == $column_name ) {
echo '<th data-label="' . esc_html__( 'Select', 'gravityflow' ) . '" scope="row" class="check-column">';
echo $this->column_cb( $item );
echo '</th>';
} elseif ( method_exists( $this, 'column_' . $column_name ) ) {
echo "<td $attributes>";
echo call_user_func( array( $this, 'column_' . $column_name ), $item );
echo '</td>';
} else {
echo "<td $attributes>";
echo $this->column_default( $item, $column_name );
echo '</td>';
}
}
}
'''
如您所见,我已经尝试添加“$style="class='tr-shadow"。但是,这不会向 table 添加任何样式。我假设我没有正确格式化 $style 变量以 css class 可识别的方式。我如何使用 $style 变量成功地将 css class 输出到 table 的每一行.
在此代码片段中,您设置了 classes:
$class = "class='$column_name column-$column_name'";
$style = "class='tr-shadow'";
然后将其连接成一个字符串:
$attributes = "$class$style$data_label";
因此,我认为您的第二个 class 被忽略了。
您的 $style
变量再次包含属性 style
,这将导致如下结果:
class="column_name column-bar class=' ...
这是无效的。
我建议将您的代码更改为如下内容:
public function single_row_columns( $item ) {
list( $columns, $hidden ) = $this->get_column_info();
foreach ( $columns as $column_name => $column_display_name ) {
$class = "$column_name column-$column_name";
$class .= " tr-shadow";
if ( in_array( $column_name, $hidden ) ) {
$class .= " tr-shadow";
}
$data_label = ( ! empty( $column_display_name ) ) ? " data-label='$column_display_name'" : '';
$attributes = "$data_label";
if ( 'cb' == $column_name ) {
echo '<th data-label="' . esc_html__( 'Select', 'gravityflow' ) . '" scope="row" class="check-column">';
echo $this->column_cb( $item );
echo '</th>';
} elseif ( method_exists( $this, 'column_' . $column_name ) ) {
echo "<td class=\"$class\" $attributes>";
echo call_user_func( array( $this, 'column_' . $column_name ), $item );
echo '</td>';
} else {
echo "<td class=\"$class\" $attributes>";
echo $this->column_default( $item, $column_name );
echo '</td>';
}
}
}
此外,无论您做什么,看起来 class 总是 tr-shadow
。
我有一个 PHP 函数,它接受一个使用重力流过滤的 table。此函数循环遍历 table 的每一行。我想更改此 table 的样式。我有一个特定的 CSS class 我想要 table 样式。这个class就是"tr-shadow"。我会将此 CSS class 应用于 table 的每一行。我有一个用于 CSS 的 $style 变量。如何将 CSS class 添加为 $style 变量的字符串,以便 table 可以从 class 中打印出 CSS?这是下面的代码。
'''
public function single_row_columns( $item ) {
list( $columns, $hidden ) = $this->get_column_info();
foreach ( $columns as $column_name => $column_display_name ) {
$class = "class='$column_name column-$column_name'";
$style = "class='tr-shadow'";
if ( in_array( $column_name, $hidden ) ) {
$style = "class='tr-shadow'";
}
$data_label = ( ! empty( $column_display_name ) ) ? " data-label='$column_display_name'" : '';
$attributes = "$class$style$data_label";
if ( 'cb' == $column_name ) {
echo '<th data-label="' . esc_html__( 'Select', 'gravityflow' ) . '" scope="row" class="check-column">';
echo $this->column_cb( $item );
echo '</th>';
} elseif ( method_exists( $this, 'column_' . $column_name ) ) {
echo "<td $attributes>";
echo call_user_func( array( $this, 'column_' . $column_name ), $item );
echo '</td>';
} else {
echo "<td $attributes>";
echo $this->column_default( $item, $column_name );
echo '</td>';
}
}
}
''' 如您所见,我已经尝试添加“$style="class='tr-shadow"。但是,这不会向 table 添加任何样式。我假设我没有正确格式化 $style 变量以 css class 可识别的方式。我如何使用 $style 变量成功地将 css class 输出到 table 的每一行.
在此代码片段中,您设置了 classes:
$class = "class='$column_name column-$column_name'";
$style = "class='tr-shadow'";
然后将其连接成一个字符串:
$attributes = "$class$style$data_label";
因此,我认为您的第二个 class 被忽略了。
您的 $style
变量再次包含属性 style
,这将导致如下结果:
class="column_name column-bar class=' ...
这是无效的。
我建议将您的代码更改为如下内容:
public function single_row_columns( $item ) {
list( $columns, $hidden ) = $this->get_column_info();
foreach ( $columns as $column_name => $column_display_name ) {
$class = "$column_name column-$column_name";
$class .= " tr-shadow";
if ( in_array( $column_name, $hidden ) ) {
$class .= " tr-shadow";
}
$data_label = ( ! empty( $column_display_name ) ) ? " data-label='$column_display_name'" : '';
$attributes = "$data_label";
if ( 'cb' == $column_name ) {
echo '<th data-label="' . esc_html__( 'Select', 'gravityflow' ) . '" scope="row" class="check-column">';
echo $this->column_cb( $item );
echo '</th>';
} elseif ( method_exists( $this, 'column_' . $column_name ) ) {
echo "<td class=\"$class\" $attributes>";
echo call_user_func( array( $this, 'column_' . $column_name ), $item );
echo '</td>';
} else {
echo "<td class=\"$class\" $attributes>";
echo $this->column_default( $item, $column_name );
echo '</td>';
}
}
}
此外,无论您做什么,看起来 class 总是 tr-shadow
。