javascript - 是否可以在 OctoberCMS 的 If 语句中使用 URL 参数?

标签 javascript html octobercms

我遇到的问题是页面上的各种翻译使用 URL 参数来动态填充表单的内容。该表单有单选按钮,我希望根据 URL 参数默认选中其中一个按钮。

例如,如果 URL 为 ?lang=dk,我希望选中欧洲单选按钮,但如果它为 ?lang=fr-ca >,我希望它检查北美:

<form id="contact-form" method="post" class="form-contact" enctype="multipart/form-data">
  <div id="form-platform" class="form-platform--radio-group">
    <label class="radio--button" for="option-na">
        <input class="form__input" type="radio" id="option-na" name="platform"
               value="NA">
        <i></i>
        <span class="radio--label">North America</span>
    </label>

    <label class="radio--button" for="option-eu">
        <input class="form__input" type="radio" id="option-eu" name="platform"
               value="EU">
        <i></i>
        <span class="radio--label">Europe</span>
    </label>
</div>                            
</form>

到目前为止,我已经尝试使用 this.param 但到目前为止还没有成功。

我唯一的选择是使用 Javascript 来实现我的需求,还是可以使用 OctoberCMS 实现这一点?

最佳答案

澄清:

像“example.com?lang=us”这样的url正在服务器上发出请求。请求为Input::get('lang') = 'us'

像“example.com/:lang?/”这样的 url 正在使用 Laravel 路由系统来访问 slug 的参数。这看起来像“example.com/us/page”,请求看起来像 this.param('lang') = 'us'

这两种方法都适用于您的系统,具体取决于您设置语言的方式。

我的建议是在设计网站时考虑到动态值并使用这样的集合。

CMS 页面中的 PHP 代码用于临时:

function onStart() {
    $language = Input::get('lang'); //check for a language request
    $languages = [ //build language array
            'dk' => [
                'place' => 'European',
                'selected' => false,
                'value' => 'eu'
            ],
            'fr-ca' => [
                'place' => 'North America',
                'selected' => false,
                'value' => 'na'
            ]
        ];
    if (isset($languages[$language])) {
        $languages[$language]['selected'] = true; //see if the language request is in the array then set selected to true
    }
    $this['languages'] = $languages; //return languages to the page
}

在页面的标记部分,您可以执行此操作 - 使用 twig,您只需创建一个 for 循环即可设置变量并检查是否选择了语言。

<form id="contact-form" method="post" class="form-contact" enctype="multipart/form-data">
    <div id="form-platform" class="form-platform--radio-group">
        {% for language in languages %}
            <label class="radio--button" for="option-{{ language.value}}">
                <input class="form__input" type="radio" id="option-{{ language.value }}" name="platform"
               value="{{ language.value | upper }}" {% if language.selected %}checked{% endif %} >
                <i></i>
                <span class="radio--label">{{ language.place }}</span>
            </label>
        {% endfor %}
    </div>                            
</form>

关于javascript - 是否可以在 OctoberCMS 的 If 语句中使用 URL 参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59265441/

相关文章:

javascript - 如何设计 Twitter 弹出窗口

javascript - id_number 变量在 url 中使用时返回 null

php - 通过添加配置文件扩展用户插件不会在 OctoberCMS 中呈现选项卡或新添加的字段

javascript - 如何在 octobercms 中使用 ajax 或 javascript 动态更改表单的方向

javascript - 如何使 casperjs 正确使用 ajax 进度表?

javascript - Dispatch 不是函数 - 带有 React Redux Hooks 的 React 测试库

html - CSS 网格为每个 html 标签创建一个新框

html - 需要帮助前端用户使用 Merchello 电子商务产品搜索功能

css - 试图显示固定高度的 DIV。为什么后续的 DIV 显示在固定高度的 DIV 之上?

octobercms - 使用构建器插件在列表搜索中显示下拉值而不是下拉键