如何解决在树枝中注入常量参数形式的吸气剂
我在实体中定义了常量,例如:
$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)) }}
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。