在 OpenCart 2.x.x.x admin (OCmod) 中使必填模型字段可选
Make required model field optional in OpenCart 2.x.x.x admin (OCmod)
我试图通过在 OpenCart 版本 2.0.1.1 中编写以下 OCmod 来使 OpenCart 中的必填模型字段成为可选字段。
<modification>
<name>Remove required model (OC 2.0+)</name>
<version>v1.0</version>
<link>http://www.example.com</link>
<author>John Doe</author>
<code>fv16343000</code>
<!-- Remove required "Model" from Product controller -->
<file path="admin/model/catalog/product.php">
<operation>
<search><![CDATA[if ((utf8_strlen($this->request->post['model']) < 1) || (utf8_strlen($this->request->post['model']) > 64)) {]]></search>
<add position="replace"><![CDATA[if (utf8_strlen($this->request->post['model']) > 64) {]]></add>
</operation>
</file>
</modification>
如您所见,我旨在替换条件,使其忽略最小长度。
我还修改了 product_form.tpl(删除了它在 form-group 旁边的 "required" class):
<div class="form-group">
<label class="col-sm-2 control-label" for="input-model"><?php echo $entry_model; ?></label>
<div class="col-sm-10">
<input type="text" name="model" value="<?php echo $model; ?>" placeholder="<?php echo $entry_model; ?>" id="input-model" class="form-control" />
<?php if ($error_model) { ?>
<div class="text-danger"><?php echo $error_model; ?></div>
<?php } ?>
</div>
</div>
然后我尝试添加没有模型的产品,星号消失了,但错误仍然出现(说我需要用最少 1 个字符到最多 64 个字符来完成该字段)。
我认为我的 OCmod 可能不够好,所以我尝试直接编辑控制器 product.php,如 OCmod 所示。错误仍然存在,所以我从 .tpl 中完全删除了条件和以下代码:
<?php if ($error_model) { ?>
<div class="text-danger"><?php echo $error_model; ?></div>
<?php } ?>
删除 bootstrap class 有效(不显示星号所以它有效)但出于某种原因仍然需要该字段,即使控制器中的条件消失了。
我做错了什么?如何使模型字段可选?
应用 vQmod 后,您覆盖的文件将与 modifications 一起重写到 vqcache 文件夹。所以修改原文件不再生效
通过删除 vqcache 文件夹中的相应文件来清除 vQmod 缓存。您还可以检查同一文件夹中的文件,以确保您最近的 mod 已生效。
现在继续您要执行的操作,删除长度限制。为此,只需将 if 语句替换为 if (false){
以确保它永远不会触发。
我开发了一个免费的扩展程序,可以在添加产品时将模型字段设置为可选。我希望这就是您要找的东西 - http://www.opencart.com/index.php?route=extension/extension/info&extension_id=25426。
乔尔
我设法通过使用 OCmod 解决了我的问题。删除模型的正确方法是:
<!-- Remove required class from register.tpl-->
<file path="admin/view/template/catalog/product_form.tpl">
<operation>
<search offset="1" index="2"><![CDATA[<div class="form-group required">]]></search>
<add position="replace"><![CDATA[<div class="form-group">]]></add>
</operation>
</file>
<!-- Comment the error line from the controller-->
<file path="admin/controller/catalog/product.php">
<operation>
<search><![CDATA[$this->error['model'] = $this->language->get('error_model');]]></search>
<add position="replace"><![CDATA[//$this->error['model'] = $this->language->get('error_model');]]></add>
</operation>
</file>
此代码也可用作 VQmod(如果您在此之前使用了正确的标签)。
对于那些不了解 OCmods 如何工作但仍想硬编码删除强制模型的人,您需要执行以下操作:
- 打开 admin/view/template/catalog/product_form.tpl
- 搜索与模型字段相关的
<div class="form-group required">
并删除 required
class
- 打开 admin/controller/catalog/product.php 文件
- 寻找这一行:
$this->error['model'] = $this->language->get('error_model');
- 发表评论
大功告成。
我试图通过在 OpenCart 版本 2.0.1.1 中编写以下 OCmod 来使 OpenCart 中的必填模型字段成为可选字段。
<modification>
<name>Remove required model (OC 2.0+)</name>
<version>v1.0</version>
<link>http://www.example.com</link>
<author>John Doe</author>
<code>fv16343000</code>
<!-- Remove required "Model" from Product controller -->
<file path="admin/model/catalog/product.php">
<operation>
<search><![CDATA[if ((utf8_strlen($this->request->post['model']) < 1) || (utf8_strlen($this->request->post['model']) > 64)) {]]></search>
<add position="replace"><![CDATA[if (utf8_strlen($this->request->post['model']) > 64) {]]></add>
</operation>
</file>
</modification>
如您所见,我旨在替换条件,使其忽略最小长度。
我还修改了 product_form.tpl(删除了它在 form-group 旁边的 "required" class):
<div class="form-group">
<label class="col-sm-2 control-label" for="input-model"><?php echo $entry_model; ?></label>
<div class="col-sm-10">
<input type="text" name="model" value="<?php echo $model; ?>" placeholder="<?php echo $entry_model; ?>" id="input-model" class="form-control" />
<?php if ($error_model) { ?>
<div class="text-danger"><?php echo $error_model; ?></div>
<?php } ?>
</div>
</div>
然后我尝试添加没有模型的产品,星号消失了,但错误仍然出现(说我需要用最少 1 个字符到最多 64 个字符来完成该字段)。
我认为我的 OCmod 可能不够好,所以我尝试直接编辑控制器 product.php,如 OCmod 所示。错误仍然存在,所以我从 .tpl 中完全删除了条件和以下代码:
<?php if ($error_model) { ?>
<div class="text-danger"><?php echo $error_model; ?></div>
<?php } ?>
删除 bootstrap class 有效(不显示星号所以它有效)但出于某种原因仍然需要该字段,即使控制器中的条件消失了。
我做错了什么?如何使模型字段可选?
应用 vQmod 后,您覆盖的文件将与 modifications 一起重写到 vqcache 文件夹。所以修改原文件不再生效
通过删除 vqcache 文件夹中的相应文件来清除 vQmod 缓存。您还可以检查同一文件夹中的文件,以确保您最近的 mod 已生效。
现在继续您要执行的操作,删除长度限制。为此,只需将 if 语句替换为 if (false){
以确保它永远不会触发。
我开发了一个免费的扩展程序,可以在添加产品时将模型字段设置为可选。我希望这就是您要找的东西 - http://www.opencart.com/index.php?route=extension/extension/info&extension_id=25426。
乔尔
我设法通过使用 OCmod 解决了我的问题。删除模型的正确方法是:
<!-- Remove required class from register.tpl-->
<file path="admin/view/template/catalog/product_form.tpl">
<operation>
<search offset="1" index="2"><![CDATA[<div class="form-group required">]]></search>
<add position="replace"><![CDATA[<div class="form-group">]]></add>
</operation>
</file>
<!-- Comment the error line from the controller-->
<file path="admin/controller/catalog/product.php">
<operation>
<search><![CDATA[$this->error['model'] = $this->language->get('error_model');]]></search>
<add position="replace"><![CDATA[//$this->error['model'] = $this->language->get('error_model');]]></add>
</operation>
</file>
此代码也可用作 VQmod(如果您在此之前使用了正确的标签)。
对于那些不了解 OCmods 如何工作但仍想硬编码删除强制模型的人,您需要执行以下操作:
- 打开 admin/view/template/catalog/product_form.tpl
- 搜索与模型字段相关的
<div class="form-group required">
并删除required
class - 打开 admin/controller/catalog/product.php 文件
- 寻找这一行:
$this->error['model'] = $this->language->get('error_model');
- 发表评论
大功告成。