严格(2048):CsvImportBehavior :: setup()的声明应该与ModelBehavior兼容

时间:2013-04-18 19:32:39

标签: cakephp cakephp-2.3 cakedc

我收到以下错误:

Strict (2048): Declaration of CsvImportBehavior::setup() should be compatible 
with ModelBehavior::setup(Model $model, $config = Array) 
[APP\Plugin\Utils\Model\Behavior\CsvImportBehavior.php, line 20]

我按照本网站上的教程:http://www.pronique.com/blog/enable-csv-import-all-controllers-models-cakephp-2

导入CSV文件时,会显示以下Flash消息:

Successfully imported 0 records from Book1.csv

我不明白为什么它不导入,是否与错误/警告有关?

我查看了行为(第20行的CsvImportBehaviour.php):class CsvImportBehavior extends ModelBehavior {
这在第20行没有意义,那只是类声明,所以我向下移动代码并看到以下内容:public function setup(Model &$Model, $settings = array()) { - 在我看来,这似乎符合标准。

1 个答案:

答案 0 :(得分:3)

要取消错误/警告,请尝试:

  • &之前移除$Model(因为模型是对象而不是必需的,因此已经传递 byref

(可选)(见@mark评论):

  • $Model重命名为$model(小写)

  • $settings重命名为$config

我不知道不从CSV导入记录的原因,这需要您进行调试。

替代

CakePHP还有一个CSV dataSource作为数据源插件的一部分。

使用此功能,您可以创建一个模型,该模型不使用数据库,而是使用CSV文件作为其源。例如,这允许您执行此操作;

 $csvData = $this->MyCsvModel->find('all');

这将返回CSV文件中的所有行。通过将$csvData保存到其他模型

,可以轻松将其导入数据库

链接:

https://github.com/cakephp/datasources/tree/2.0 https://github.com/cakephp/datasources/blob/2.0/Model/Datasource/CsvSource.php