日安,
我重写了我的十月CMS模型的保存功能。
public function save(Array $options=[])当我试图保存时,它抛出了一个错误。
/a/b/c/d/mysite/plugins/mycompany/myplugin/models/MyModel.php第42行中的MyCompany\MyPlugin\Models\:$options (数组$options = Array)的声明应该与10月\Rain\数据库模型::$options(数组$options= NULL,$sessionKey =NULL)兼容
所以我修改了保存函数。
public function save(Array $options=[], $sessionKey=null)那么我就会得到这个令人困惑的错误。
类型错误:传递给MyCompany\MyPlugin\Models\MyModel::save()的参数1必须为类型数组,空给定,在第251行的/a/b/c/d/mysite/modules/backend/behaviors/FormController.php中调用/a/b/c/d/mysite/plugins/mycompany/myplugin/models/MyModel.php第38行“
那么,如果它在那里传递一个null,那么考虑到类继承强制参数1是一个数组,模型如何保存呢?
编辑:这是/a/b/c/d/mysite/modules/backend/behaviors/FormController.php的第251行
$modelToSave->save(null, $this->formWidget->getSessionKey());因此,基类将接受空,即使类型提示需要Array,但是在覆盖函数时,空值不再被接受?
发布于 2017-12-18 07:42:05
您的方法签名与原始October\Rain\Database\Model方法签名不匹配。如果您阅读原始来源,您将看到$options的默认值是null。
这一点很重要,因为它告诉PHP参数值应该是array或null。目前,您的函数只需要一个array。
public function save(array $options = null, $sessionKey = null)
{
// ...
}发布于 2017-12-20 17:56:39
我认为最好的选择是使用模型事件https://octobercms.com/docs/database/model#events
public function beforeSave()
{
$this->slug = Str::slug($this->name);
}https://stackoverflow.com/questions/47863815
复制相似问题