2015-04-23 35 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