在树枝中注入常量参数形式的吸气剂

问题描述

我在实体中定义了常量,例如:

$fieldName = User::MetaDATA_OF_USER

它作为实体getter参数传递:

public function getMetadatafield($fieldName)
{
    $Metadata = json_decode($this->Metadata,true);

    return $Metadata[$fieldName] ?? null;
}

当我尝试通过树枝时将其传递:

{ item.Metadatafield }}

它要求fieldName参数为常量。

我尝试了一些树枝常量的解决方案,但没有一个我有用。我有什么方法可以在视图中注入该常量?

解决方法

根据Twig documentation,您需要使用add_action('woocommerce_after_product_attribute_settings','wcb_add_product_attribute_is_highlighted',10,2); add_action('wp_ajax_woocommerce_save_attributes','wcb_ajax_woocommerce_save_attributes',0); function get_attribute_highlighted($id) { global $post; $id = sanitize_title($id); $id = strtolower($id); $val = get_post_meta( $post->ID,"attribute_".$id."_highlighted",true); return !empty($val) ? $val : false; } function wcb_add_product_attribute_is_highlighted($attribute,$i=0) { $value = get_attribute_highlighted($attribute->get_name()); ?> <tr> <td> <div> <span class="enable_highlighted"> הערות תכונה</span> <label><input type="text" name="attribute_highlighted[<?php echo esc_attr( $i ); ?>]" value="<?php echo esc_attr($value); ?>"/> </label> </div> </td> </tr> <?php } function wcb_ajax_woocommerce_save_attributes() { check_ajax_referer( 'save-attributes','security' ); parse_str( $_POST['data'],$data ); $post_id = absint( $_POST['post_id'] ); if(array_key_exists("attribute_highlighted",$data) && is_array($data["attribute_highlighted"])) { foreach($data["attribute_highlighted"] as $i => $val) { $attr_name = sanitize_title($data["attribute_names"][$i]); $attr_name = strtolower($attr_name); update_post_meta( $post_id,"attribute_".$attr_name."_highlighted",$val); } } }函数:

constant

请注意{{ item.getMetaDataField(constant('Namespace\\User::METADATA_OF_USER')) }} // or {{ item.getMetaDataField(constant('METADATA_OF_USER',instance)) }}