2015-04-23 93 views
3

我做了一个插件CakePHP3的博客。 当我打电话给url/blog/edit/3时,一切都很好,表单输入被填充。cakephp3 - 插件类表不加载

我有一个类\博客\型号\表\ ArticlesTable(文件位置:ROOT /插件/博客/ src目录/型号/表/ ArticlesTable.php)

这里的类:

<?php 
namespace Blog\Model\Table; 

use \Cake\ORM\Table; 
use \Cake\Validation\Validator; 

class ArticlesTable extends Table 
{ 
    public function initialize(array $config) 
    { 
    //die('IN ArticlesTable::initialize'); 
    $this->table('articles'); 
    $this->primaryKey('id'); 
    $this->addBehavior('Timestamp'); 
    } 

    public function validationDefault(Validator $validator) 
    { 
    ... 
    } 
} 

在debugar,我看到消息:

生成的模型

下面的表对象使用蛋糕\ ORM \表instea具体 类的d:文章

  • 我检查命名空间和文件的情况下
  • 我运行命令作曲家dumpautoloader

不过,这不加载我的课

有人对我的问题有一个想法吗?

感谢

菲尔

+0

我想你不应该使用'使用\蛋糕\ ORM \ Table;'但是'使用Cake \ ORM \ Table;'。我的意思是,删除第一个斜线。我会建议你使用烘焙来生成基本代码。 – Choma

+0

我删除'Blog/src/Model/Entity/Article.php'和'Blog/Model/Entity/Article.php'并运行命令: 'bin \ cake.bat烘焙模型文章-p Blog' 文件已创建,但问题仍然存在: **以下表格对象使用Cake \ ORM \ Table而不是具体类:文章** – Philalawst

+0

创建特定表实例的方式和方式? – ndm

回答

2

我解决了这个问题。您需要指定该插件的命名空间,同时加载模型:

$this->loadModel('Namespace.TableName'); 

在我的例子,我改变:

class BlogController extends AppController 
{ 
    public function initialize() 
    { 
    parent::initialize(); 
    $this->loadModel('Articles');//<----- HERE 
    } 
... 
} 

class BlogController extends AppController 
{ 
    public function initialize() 
    { 
    parent::initialize(); 
    $this->loadModel('Blog.Articles'); //<----- HERE 
    } 
... 
} 
0

src/Model/Table文件夹中创建ArticlesTable类。最简单的方法是使用烘烤命令

bin/cake bake model Articles 
+0

我运行命令,文件** \ plugins \ Blog \ src \ Model \ Table \ ArticlesTable.php **,** \ plugins \ Blog \ src \ Model \ Entity \ Article.php **被创建,但这些文件未被加载。 我在Windows上是它的原因?!有没有缓存清理? – Philalawst

+0

按照本节中的说明进行操作:http://book.cakephp.org/3.0/en/plugins.html#autoloading-plugin-classes –

+0

在My/config/bootstrap中。php,我有 'Plugin :: loadAll('Blog'=> ['routes'=> true,'autoload'=> true,]);' 在/composer.json ''autoload“:{ “psr-4”:{ “App \\”:“src”, “Blog \\”:“./plugins/Blog/src” } },' 但问题仍然存在,行_ $ this-> loadModel('Blog.Articles'); _注释使autload不起作用 – Philalawst