SmartyからVueに変数を渡すときは、PHPでjson_encode
をしてから、テンプレートに渡します。
json_encode
をしないと、おかしな挙動をします。※参考
index.html
// v-bindを用いて、文字列のurlを渡します
// ダブルクオートだとバグります
// シングルクオートで渡しましょう
<Example :url='{$url}'></Example>
以下のようにして、Vueのコンポーネントでpropsとして受け取ります。
example.vue
export default defineComponent({
props: {
url: { required: true, type: String },
},
})
参考
PHPでjson_encodeをせず、Vueで変数を受け取ってconsole.log
すると、以下の結果になります。
-
文字列の場合
undefined
になります。 -
真偽値の場合
- trueのとき、
1
になります。 - falseのとき、
true
になります。
- trueのとき、
-
nullの場合
空文字
になります。 -
int型の場合
number
型の数値になります。 -
配列の場合
ƒ Array() { [native code] }
になります。 -
オブジェクトの場合
ページが壊れます。