Передача переменной PHP в качестве опоры компоненту вкладки Vue

Я пытаюсь передать переменную PHP $ avail в качестве опоры для моего компонента Vue ComponentHome.

Ниже представлена ​​упрощенная версия моего кода. На моей странице переменная «avail» кажется неопределенной, так как пробел после «Доступность:» пуст. Я пробовал использовать v-bind: avail = "{{$ avail}}", но потом ни один из моих компонентов не загрузился. Почему это? Есть ли проблема, потому что только один из компонентов вкладки использует эту переменную? Или я не правильно прохожу?

Дополнительная информация: я проверил, что переменная PHP $ avail установлена ​​правильно. Панель навигации Vue также не должна быть проблемой, поскольку раньше она работала нормально.

index.php

<?php $avail = "Coming soon"; ?>

<!--navigation bar begin-->
  <nav class = "navbar navbar-inverse">
    <div class = "container">
      <div class = "navbar-header">
        <button type = "button" class = "navbar-toggle" data-toggle = "collapse" data-target = "#myNavbar">
          <span class = "icon-bar"></span>
          <span class = "icon-bar"></span>
          <span class = "icon-bar"></span>
        </button>
      </div>
      <div class = "collapse navbar-collapse" id = "myNavbar">
        <ul class = "nav navbar-nav" data-toggle = "collapse" data-target = "#myNavbar">
          <li class = "clickable"
            avail = "{{ $avail }}"
            v-for = "tab in tabs"
            v-bind:key = "tab"
            v-bind:class = "[{ active: currentTab === tab }]"
            v-on:click = "currentTab = tab"
          ><a>{{ tab }}</a></li>
        </ul>
      </div>
    </div>
  </nav>
  <!--navigation bar end-->

<!--tab content begin-->
  <keep-alive><!--to cache inactive components-->
    <component v-bind:is = "currentTabComponent"></component>
  </keep-alive>
<!--tab content end-->

app.js

var ComponentHome = {
    template:
    '<div class = "container">\
        <h3>Availability: {{ avail }}</h3>\
    </div>',
    props: ['avail'],
    data: function() {
        return {
            avail: this.avail
        }
    }
}

var vm = new Vue({
  el: "#content",
    components: {
        "tab-home" : ComponentHome,
        "tab-costsandamenities" : ComponentCosts,
        "tab-photos" : ComponentPhotos,
        "tab-application" : ComponentApplication
    },
  data: {
    currentTab: "Home",
    tabs: ["Home", "Costs and Amenities", "Photos", "Application"]
  },
  computed: {
    currentTabComponent: function () {
      return "tab-" + this.currentTab.replace(/ /g ,"").toLowerCase();
    }
  }
})

Может <script>window.variables = <?php echo json_encode($avail); ?></script> тогда он глобально доступен.

Daniel W. 03.09.2018 17:55
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
3
1
1 979
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Поскольку $avail - это переменная PHP, вам необходимо отобразить ее с помощью PHP.

Заменить avail = "{{ $avail }}" на avail = "<php echo $avail; ?>"

Вам также нужно будет использовать правильный закрывающий тег в верхней части вашего примера. php?> не является допустимым закрывающим тегом.

Спасибо! Я вижу, что теперь переменная правильно загружается в HTML (отображается как '<li ..... avail = "Связаться для уточнения информации" ................ </li> '), но текст по-прежнему не загружается на страницу.

Agirl 03.09.2018 18:23

Вам нужно будет передать данные своим подкомпонентам. Думаю, вы можете сделать что-то вроде этого: <component v-bind: is = "currentTabComponent" avail = "<? Php echo $ avail?>"> </component> Также убедитесь, что вы не объявляете свойство данных с то же имя, что и имя реквизита. Вы можете удалить весь раздел data: {} в ComponentHome.

Martin van de Belt 03.09.2018 18:42

Другие вопросы по теме