Форма Yii не отображается в Javascript - PullRequest
0 голосов
/ 15 февраля 2019

Я очень новичок в Yii, поэтому я не уверен, если это с моей стороны испортилось или нет.

Я пытаюсь перебрать массив визуализированных форм удаленного поиска иinnerHTML отображает правильную форму на основе индекса любого типа поиска, выбранного пользователем.

Всякий раз, когда я помещаю php-рендер в массив, все остальные мои объекты innerHTML перестают появляться.Также сами формы не появятся.

Когда я отображаю формы в HTML, они работают без проблем, только когда я пытаюсь отобразить их в Javascript, возникает проблема.

Кто-нибудь может иметь решение этого?

Вот мой код:

Вид:

<div class="search-tabs-new animated fadeInUp">
<!-- Create select box for user to choose search method (by Person, Phone or Address) -->
<div class="home-search-custom-select">
  <ul class="home-search-method-options-list">
    <li id="home-search-by-btn">Search By...</li>
    <li class="home-search-method-option"></li>
    <li class="home-search-method-option"></li>
    <li class="home-search-method-option"></li>
  </ul>
</div>

<div id="home-search-form-area">
</div>

Javascript:

let methodTypes = [
  'Phone Number',
  'Name',
  'Address'
];

let homeSearchForms = [

  '<?= $this->render('/site/forms/phone_search', ['uri' => Url::to(['phone/process'])]); ?>',
  '<?= $this->render('/site/forms/person_search', ['uri' => Url::to(['people/process'])]); ?>',
  '<?= $this->render('/site/forms/address_search', ['uri' => Url::to(['address/process'])]); ?>'

];

let searchMethodOptions = document.querySelectorAll('.home-search-method-option');
searchMethodOptions = Array.from(searchMethodOptions);

function setSearchMethod() {
  for (var i = 0; i < searchMethodOptions.length; i++) {
    const searchMethodOption = searchMethodOptions[i];
    const methodType = methodTypes[i];
    const searchForm = homeSearchForms[i];

    searchMethodOption.innerHTML = methodType;

    searchMethodOption.addEventListener("click", function() {
        document.getElementById('home-search-form-area').innerHTML = searchForm;
    });

  }
}

setSearchMethod();

1 Ответ

0 голосов
/ 18 февраля 2019

Если в отображаемом вами HTML есть разрывы строк, вы должны удалить эти

let homeSearchForms = [

  '<?= preg_replace( "/\r|\n/", "", $this->render('/site/forms/phone_search', ['uri' => Url::to(['phone/process'])])); ?>',
   ...

];

, а также убедиться, что в отображаемом HTML нет одинарных кавычек

...