Yii 表单未在 Javascript 中呈现
Yii form not rendering in Javascript
我是 Yii 的新手,所以我不确定这是否是我的问题。
我正在尝试遍历呈现的远程搜索表单数组,并让内部HTML 根据用户选择的搜索类型的索引显示正确的表单。
每当我将 php 表单渲染到数组中时,我所有其他内部 HTML 对象都会停止出现。此外,表单本身不会出现。
当我在 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();
如果您渲染的HTML中有换行符,您应该删除那些
let homeSearchForms = [
'<?= preg_replace( "/\r|\n/", "", $this->render('/site/forms/phone_search', ['uri' => Url::to(['phone/process'])])); ?>',
...
];
并确保在呈现的 HTML
中没有任何单引号
我是 Yii 的新手,所以我不确定这是否是我的问题。
我正在尝试遍历呈现的远程搜索表单数组,并让内部HTML 根据用户选择的搜索类型的索引显示正确的表单。
每当我将 php 表单渲染到数组中时,我所有其他内部 HTML 对象都会停止出现。此外,表单本身不会出现。
当我在 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();
如果您渲染的HTML中有换行符,您应该删除那些
let homeSearchForms = [
'<?= preg_replace( "/\r|\n/", "", $this->render('/site/forms/phone_search', ['uri' => Url::to(['phone/process'])])); ?>',
...
];
并确保在呈现的 HTML
中没有任何单引号