如何将 PHP 变量传递给 Vue 指令

Posted

技术标签:

【中文标题】如何将 PHP 变量传递给 Vue 指令【英文标题】:How to pass PHP variable to Vue directive 【发布时间】:2018-02-17 20:25:44 【问题描述】:

在 Vue 和 WordPress 方面寻求帮助:

我正在尝试让 Vue 和 php 相互交流,但遇到了一些麻烦。目前,在项目中,我们正在为每个“资源”创建一个锚点

<a v-if="resource.pdf_color"
                     :href="resource.pdf_color.url"
                     download
                     class="btn btn-with-icon icon-file-check"
                     data-toggle="tooltip"
                     data-placement="top"
                     title="Color Download">
                          <label>Color Download</label>
</a>

但是,我们想使用一个名为“Easy Media Download”的 WP 插件来限制下载资源的数量(我们正在尽量减少会员签署一个月以下载所有材料然后取消服务)。

我试图弄清楚如何能够在短代码 do_shortcode( '[easy_media_download url=" $url "]' ) 中调用 $url resource.pdf_color.url,然后将其绑定到 href 参数中的锚元素。我尝试了几件事,但运气不佳。

关于如何解决这个问题的任何建议或想法?

【问题讨论】:

这个问题基本上归结为“如何将 PHP 变量传递给 javascript 【参考方案1】:

有几个选项可以将变量从服务器端(例如 php、flask 等)传递到 Vue,我将向您展示 4 个适用于简单数据类型(int、字符串等)的选项,并且需要更多的努力,您还可以使它们适用于更复杂的数据类型(数组、对象等)。此示例使用 python (Flask),但您应该能够轻松地对其进行调整以适应 PHP。 我希望它有所帮助,因为坦率地说,你的问题不太清楚

    使用内联 JavaScript

只需在脚本标签中分配变量

<script type="text/JavaScript"> 
 #some var from flask
  var d_var = "somevalue" 
 </script>

然后在你的 vue 脚本中,你可以这样做

var vm = new Vue(
  el: '#demo',
  data: 
  d: d_var
  ...

剩下的步骤涉及将变量分配给 DOM 元素的属性(例如隐藏的输入)

    使用 jQuery

在主 vue dom 元素内创建一个隐藏输入,并将其值设置为您的烧瓶变量

<input name="d_elem" type="hidden" value="somevalue" id="d_elem" />

然后在你的 vue 脚本中你现在可以做

var d_var = $("#d_elem").val(); 
var vm = new Vue(
  el: '#demo',
  data: 
  d: d_var
  ...
    使用普通的旧 getElementById

如果你遇到 JS 库疲劳,只需像以前一样创建隐藏输入,但这次你做

 var userid3 =  document.getElementById("userid2").value;
 var vm = new Vue(
  el: '#demo',
  data: 
  d: d_var
  ...
    使用 vm.$refs

使用 ref 属性创建隐藏输入

<input name="d_elem" type="hidden" value="somevalue" ref="d_elem" />

像在 vue 实例中一样访问它

var d_var = this.$refs.d_elem.value ;

【讨论】:

感谢您的建议!抱歉,问题不够清楚。第一个似乎是我正在寻找的答案类型。非常感谢您的帮助! 不客气@Joe P,如果您遇到任何其他问题,可以在帖子中告诉我

以上是关于如何将 PHP 变量传递给 Vue 指令的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Django 变量传递给 Vue 道具

如何将 PHP 数组传递给 Vue.js?

PHP:如何将实例变量传递给闭包?

如何将数组从 Laravel Blade 传递到 Laravel 6/Vue 2.6 中的 Vue 组件。*

如何从 Blade 格式 HTML 将 PHP 变量传递给 JavaScript 函数

如何将多个 PHP 变量传递给 jQuery 函数?