【问题标题】:Opencart 3 multilanguage fields in store settings商店设置中的 Opencart 3 多语言字段
【发布时间】:2020-07-14 11:53:59
【问题描述】:

我想让 Opencart 3 商店设置中的“开放”字段多语言。

在 admin\view\template\setting\setting.twig 中。 我找到了这些行:

<div class="form-group">
    <label class="col-sm-2 control-label" for="input-open"><span data-toggle="tooltip" data-container="#tab-general" title="{{ help_open }}"> {{ entry_open }}</span></label>
    <div class="col-sm-10">
      <textarea name="config_open" rows="5" placeholder="{{ entry_open }}" id="input-open" class="form-control">{{ config_open }}</textarea>
    </div>
</div>

我从 textarea 中创建 - 输入并添加 {% for language in languages %}、语言标志和语言 ID。

{% for language in languages %}
<div class="form-group">
    <label class="col-sm-2 control-label" for="input-open{{ language.language_id }}"><img src="language/{{ language.code }}/{{ language.code }}.png" title="{{ language.name }}" /><span data-toggle="tooltip" data-container="#tab-general" title="{{ help_open }}"> {{ entry_open }}</span></label>
    <div class="col-sm-10">
        <input type="text" name="config_open[{{ language.language_id }}][title]" placeholder="{{ entry_open }}" id="input-open{{ language.language_id }}" value="{{ config_open[language.language_id] ? config_open[language.language_id].title }}" class="form-control" />
    </div>
</div>
{% endfor %}

在此之后,在商店设置中,我有两种语言的“开放”字段。这些字段中的信息现在已存储。

在前端控制器中,我做了这个。

$data['open'] = nl2br($this->config->get('config_open'));

什么时候一种语言一切正常,但现在我有一个错误:

Warning: nl2br() expects parameter 1 to be string, array given in /var/www/fastuser/data/www/localstite.loc/storage/modification/catalog/controller/common/header.php on line 81

【问题讨论】:

    标签: php opencart opencart-3


    【解决方案1】:

    已编辑...

    对应的控制器文件必须包含此代码:

    $this->load->model('localisation/language');
        $languages = $this->model_localisation_language->getLanguages();
            
                foreach ($languages as $language) {
                    if (isset($this->request->post[config_open' . $language['language_id']])) {
                        $data['config_open'][$language['language_id']] = $this->request->post['config_open' . $language['language_id']];
                    } else {
                        $data['config_open'][$language['language_id']] = $this->config->get('config_open' . $language['language_id']);
                    }   
                }
    

    行:

     <input type="text" name="config_open[{{ language.language_id }}][title]" placeholder="{{ entry_open }}" id="input-open{{ language.language_id }}" value="{{ config_open[language.language_id] ? config_open[language.language_id].title }}" class="form-control" />
    

    替换为:

     <input type="text" name="config_open{{ language.language_id }}" placeholder="{{ entry_open }}" id="input-open{{ language.language_id }}" value="{% if config_open[language.language_id] %}{{ config_open[language.language_id] }}{% endif %}" class="form-control" />
    

    和前端线:

    $data['open'] = nl2br($this->config->get('config_open'));
    

    替换为:

    $data['open'] = nl2br($this->config->get('config_open' . $this->config->get('config_language_id')));
    

    【讨论】:

    • 完成了。现在我在“打开”字段的管理面板中有一个错误:&lt;b&gt;Notice&lt;/b&gt;: Array to string conversion in &lt;b&gt;/var/www/fastuser/data/www/localsite.loc/system/library/template/Twig/Environment.php(403) : eval()'d code&lt;/b&gt; on line &lt;b&gt;443&lt;/b&gt;Array。在前端什么都没有。没有任何错误。而且我的信息也是空的。
    • 编辑文件后,您必须刷新修改并清除管理仪表板中的缓存。如果错误没有消失,这意味着你错过了一些东西。
    • 我已经做到了。我认为&lt;input type="text" name="config_open{{ language.language_id }}" placeholder="{{ entry_open }}" id="input-open{{ language.language_id }}" value="{% if config_open[language.language_id] %}{{ config_open[language.language_id] }}{% endif %}" class="form-control" /&gt; 有错误。因为我还有这个错误&lt;b&gt;Notice&lt;/b&gt;: Array to string conversion in &lt;b&gt;/var/www/fastuser/data/www/localsite.loc/system/library/template/Twig/Environment.php(403) : eval()'d code&lt;/b&gt; on line &lt;b&gt;443&lt;/b&gt;Array
    • 我已经编辑了我的答案。检查相应的管理控制器文件。此文件是否包含放置在可编辑答案中的代码。
    • 当我在管理控制器文件中添加您的代码时,浏览器中出现错误:HTTP ERROR 500。您的代码基于此字符串$languages = $this-&gt;model_localisation_language-&gt;getLanguages();。我在这个控制器文件字符串中找到了你的$data['languages'] = $this-&gt;model_localisation_language-&gt;getLanguages();。我有 HTTP ERROR 500 这个字符串只有 $languages = $this-&gt;model_localisation_language-&gt;getLanguages(); 也许我们需要以不同的方式来做?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-28
    • 1970-01-01
    • 2016-10-25
    相关资源
    最近更新 更多